Whamcloud - gitweb
LUDOC-394 manual: Add meaningful ref names under ConfiguringLustre.xml
[doc/manual.git] / LustreDebugging.xml
index c9ec606..089dd54 100644 (file)
@@ -1,7 +1,10 @@
 <?xml version='1.0' encoding='UTF-8'?>
-<!-- This document was created with Syntext Serna Free. --><chapter xmlns="http://docbook.org/ns/docbook" xmlns:xl="http://www.w3.org/1999/xlink" version="5.0" xml:lang="en-US" xml:id="lustredebugging">
-  <title xml:id="lustredebugging.title">Lustre Debugging</title>
-  <para>This chapter describes tips and information to debug Lustre, and includes the following sections:</para>
+<chapter xmlns="http://docbook.org/ns/docbook"
+ xmlns:xl="http://www.w3.org/1999/xlink" version="5.0" xml:lang="en-US"
+ xml:id="lustredebugging">
+  <title xml:id="lustredebugging.title">Debugging a Lustre File System</title>
+  <para>This chapter describes tips and information to debug a Lustre file system, and includes the
+    following sections:</para>
   <itemizedlist>
     <listitem>
       <para><xref linkend="dbdoclet.50438274_15874"/></para>
   <section xml:id="dbdoclet.50438274_15874">
     <title><indexterm><primary>debugging</primary></indexterm>
 Diagnostic and Debugging Tools</title>
-    <para>A variety of diagnostic and analysis tools are available to debug issues with the Lustre software. Some of these are provided in Linux distributions, while others have been developed and are made available by the Lustre project.</para>
-    <section remap="h3">
-      <title><indexterm><primary>debugging</primary><secondary>tools</secondary></indexterm>
-Lustre Debugging Tools</title>
-      <para>The following in-kernel debug mechanisms are incorporated into the Lustre software:</para>
+    <para>A variety of diagnostic and analysis tools are available to debug
+      issues with the Lustre software. Some of these are provided in Linux
+      distributions, while others have been developed and are made available
+      by the Lustre project.</para>
+    <section remap="h3" xml:id="section_dms_q21_kk">
+      <title><indexterm>
+          <primary>debugging</primary>
+          <secondary>tools</secondary>
+        </indexterm> Lustre Debugging Tools</title>
+      <para>The following in-kernel debug mechanisms are incorporated into
+        the Lustre software:</para>
       <itemizedlist>
         <listitem>
-          <para><emphasis role="bold">Debug logs</emphasis>  - A circular debug buffer to which Lustre internal debug messages are written (in contrast to error messages, which are printed to the syslog or console). Entries to the Lustre debug log are controlled by the mask set by <literal>/proc/sys/lnet/debug</literal>. The log size defaults to 5 MB per CPU but can be increased as a busy system will quickly overwrite 5 MB. When the buffer fills, the oldest information is discarded.</para>
+          <para xml:id="para_fkj_rld_hk"><emphasis role="bold">Debug logs</emphasis>
+            - A circular debug buffer to which Lustre internal debug messages
+            are written (in contrast to error messages, which are printed to the
+            syslog or console). Entries in the Lustre debug log are controlled
+            by a mask set by <literal>lctl set_param debug=<replaceable>mask</replaceable></literal>.
+            The log size defaults to 5 MB per CPU but can be increased as a
+            busy system will quickly overwrite 5 MB. When the buffer fills,
+            the oldest log records are discarded.</para>
+        </listitem>
+        <listitem>
+          <para><emphasis role="bold">
+              <literal>lctl get_param debug</literal>
+            </emphasis> - This shows the current debug mask used to delimit
+            the debugging information written out to the kernel debug logs.
+          </para>
         </listitem>
         <listitem>
-          <para><emphasis role="bold">Debug daemon</emphasis>  - The debug daemon controls logging of debug messages.</para>
+          <para><emphasis role="bold">
+              <literal>lctl debug_kernel <replaceable>file</replaceable></literal>
+            </emphasis> - Dump the Lustre kernel debug log to the specified
+            file as ASCII text for further debugging and analysis.
+          </para>
         </listitem>
         <listitem>
           <para><emphasis role="bold">
-              <literal>/proc/sys/lnet/debug</literal>
-            </emphasis>  - This file contains a mask that can be used to delimit the debugging information written out to the kernel debug logs.</para>
+              <literal>lctl set_param debug_mb=<replaceable>size</replaceable></literal>
+            </emphasis> - This sets the maximum size of the in-kernel Lustre
+            debug buffer, in units of MiB.
+          </para>
+        </listitem>
+        <listitem>
+          <para><emphasis role="bold">Debug daemon</emphasis>
+            - The debug daemon controls the continuous logging of debug
+            messages to a log file in userspace.</para>
         </listitem>
       </itemizedlist>
       <para>The following tools are also provided with the Lustre software:</para>
@@ -39,17 +73,27 @@ Lustre Debugging Tools</title>
         <listitem>
           <para><emphasis role="bold">
               <literal>lctl</literal>
-            </emphasis>  - This tool is used with the debug_kernel option to manually dump the Lustre debugging log or post-process debugging logs that are dumped automatically. For more information about the lctl tool, see <xref linkend="dbdoclet.50438274_62472"/> and <xref linkend="dbdoclet.50438219_38274"/>.</para>
+            </emphasis> - This tool is used with the debug_kernel option to
+            manually dump the Lustre debugging log or post-process debugging
+            logs that are dumped automatically. For more information about the
+            lctl tool, see <xref linkend="dbdoclet.50438274_62472"/> and <xref
+              linkend="dbdoclet.50438219_38274"/>.</para>
         </listitem>
         <listitem>
-          <para>Lustre subsystem asserts - A panic-style assertion (LBUG) in the kernel causes Lustre to dump the debug log to the file <literal>/tmp/lustre-log.<replaceable>timestamp</replaceable></literal> where it can be retrieved after a reboot. For more information, see <xref linkend="dbdoclet.50438198_40669"/>.</para>
+          <para>Lustre subsystem asserts - A panic-style assertion (LBUG) in the kernel causes the
+            Lustre file system to dump the debug log to the file
+                <literal>/tmp/lustre-log.<replaceable>timestamp</replaceable></literal> where it can
+            be retrieved after a reboot. For more information, see <xref
+              linkend="dbdoclet.50438198_40669"/>.</para>
         </listitem>
         <listitem>
           <para>
-                  <literal>
+            <literal>
               <replaceable>lfs</replaceable>
-            </literal>
-                  - This utility provides access to the extended attributes (EAs) of a Lustre file (along with other information). For more information about lfs, see <xref linkend="dbdoclet.50438206_94597"/>.</para>
+            </literal> - This utility provides access to the layout of
+            of a Lustre file, along with other information relevant to users.
+            For more information about lfs, see <xref
+              linkend="userutilities.lfs"/>.</para>
         </listitem>
       </itemizedlist>
     </section>
@@ -58,7 +102,8 @@ Lustre Debugging Tools</title>
       <para>The tools described in this section are provided in the Linux kernel or are available at an external website. For information about using some of these tools for Lustre debugging, see <xref linkend="dbdoclet.50438274_23607"/> and <xref linkend="dbdoclet.50438274_80443"/>.</para>
       <section remap="h4">
         <title><indexterm><primary>debugging</primary><secondary>admin tools</secondary></indexterm>Tools for Administrators and Developers</title>
-        <para>Some general debugging tools provided as a part of the standard Linux distro are:</para>
+        <para>Some general debugging tools provided as a part of the standard Linux distribution
+          are:</para>
         <itemizedlist>
           <listitem>
             <para><emphasis role="bold">
@@ -71,7 +116,9 @@ Lustre Debugging Tools</title>
               </emphasis> . <literal>syslogd</literal> prints fatal or serious messages at this log.</para>
           </listitem>
           <listitem>
-            <para><emphasis role="bold">Crash dumps</emphasis> . On crash-dump enabled kernels, sysrq c produces a crash dump. Lustre enhances this crash dump with a log dump (the last 64 KB of the log) to the console.</para>
+            <para><emphasis role="bold">Crash dumps</emphasis> . On crash-dump enabled kernels,
+              sysrq c produces a crash dump. The Lustre software enhances this crash dump with a log
+              dump (the last 64 KB of the log) to the console.</para>
           </listitem>
           <listitem>
             <para><emphasis role="bold">
@@ -82,56 +129,72 @@ Lustre Debugging Tools</title>
         <para>The following logging and data collection tools can be used to collect information for debugging Lustre kernel issues:</para>
         <itemizedlist>
           <listitem>
-            <para><emphasis role="bold">
-                <literal>kdump</literal>
-              </emphasis> . A Linux kernel crash utility useful for debugging a system running Red Hat Enterprise Linux. For more information about <literal>kdump</literal>, see the Red Hat knowledge base article <link xl:href="http://kbase.redhat.com/faq/docs/DOC-6039">How do I configure kexec/kdump on Red Hat Enterprise Linux 5?</link>. To download <literal>kdump</literal>, go to the <link xl:href="http://fedoraproject.org/wiki/SystemConfig/kdump#Download">Fedora Project Download</link> site.</para>
+            <para><emphasis role="bold"><literal>kdump</literal></emphasis>.
+            A Linux kernel crash utility useful for debugging a system running
+            Red Hat Enterprise Linux. For more information about
+            <literal>kdump</literal>, see the Red Hat knowledge base article
+            <link xl:href="https://access.redhat.com/solutions/6038">How to
+            troubleshoot kernel crashes, hangs, or reboots with kdump on
+            Red Hat Enterprise Linux</link>. To download
+            <literal>kdump</literal>, install the RPM package via
+            <literal>yum install kexec-tools</literal>.
+            </para>
           </listitem>
           <listitem>
-            <para><emphasis role="bold">
-                <literal>netconsole</literal>
-              </emphasis>. Enables kernel-level network logging over UDP. A system requires (SysRq) allows users to collect relevant data through <literal>netconsole</literal>.</para>
+            <para><emphasis role="bold"><literal>netconsole</literal></emphasis>.
+            Enables kernel-level network logging over UDP. A system requires
+            (SysRq) allows users to collect relevant data through
+            <literal>netconsole</literal>.</para>
           </listitem>
           <listitem>
-            <para><emphasis role="bold">
-                <literal>netdump</literal>
-              </emphasis>. A crash dump utility from Red Hat that allows memory images to be dumped over a network to a central server for analysis. The <literal>netdump</literal> utility was replaced by <literal>kdump</literal> in RHEL 5. For more information about <literal>netdump</literal>, see <link xl:href="http://www.redhat.com/support/wpapers/redhat/netdump/">Red Hat, Inc.&apos;s Network Console and Crash Dump Facility</link>.</para>
+            <para><emphasis><literal>wireshark</literal> </emphasis>. A network
+            packet inspection tool that allows debugging of information that was
+            sent between the various Lustre nodes. This tool is built on top of
+            <literal>tcpdump</literal> and can read packet dumps generated by
+            it.  There are plug-ins available to dissassemble the LNet and
+            Lustre protocols.  They are included with
+            <literal>wireshark</literal> since version 2.6.0.  See also the
+            <link xl:href="https://www.wireshark.org/">Wireshark Website</link>
+            for more details.</para>
           </listitem>
-         <listitem>
-           <para><emphasis><literal>wireshark</literal> </emphasis> . A network
-           packet inspection tool that allows debugging of information that was
-           sent between the various Lustre nodes. This tool is built on top of
-           <literal>tcpdump</literal> and can read packet dumps generated by
-           it.  There are plug-ins available to dissassemble the LNET and
-           Lustre protocols.  They are located within the <link
-           xl:href="http://git.whamcloud.com/">Lustre git repository</link>
-           under <literal>lustre/contrib/wireshark/</literal>.  Installation
-           instruction are included in that directory. See also <link
-           xl:href="http://www.wireshark.org/">Wireshark Website</link> for
-           more details.</para>
-         </listitem>
         </itemizedlist>
       </section>
       <section remap="h4">
         <title><indexterm><primary>debugging</primary><secondary>developer tools</secondary></indexterm>Tools for Developers</title>
-        <para>The tools described in this section may be useful for debugging Lustre in a development environment.</para>
+        <para>The tools described in this section may be useful for debugging a Lustre file system
+          in a development environment.</para>
         <para>Of general interest is:</para>
         <itemizedlist>
           <listitem>
             <para><literal>
                 <replaceable>leak_finder.pl</replaceable>
-              </literal> . This program provided with Lustre is useful for finding memory leaks in the code.</para>
+              </literal> . This program provided with the Lustre software is useful for finding
+              memory leaks in the code.</para>
           </listitem>
         </itemizedlist>
         <para>A virtual machine is often used to create an isolated development and test environment. Some commonly-used virtual machines are:</para>
         <itemizedlist>
           <listitem>
-            <para><emphasis role="bold">VirtualBox Open Source Edition</emphasis> . Provides enterprise-class virtualization capability for all major platforms and is available free at <link xl:href="http://www.sun.com/software/products/virtualbox/get.jsp?intcmp=2945">Get Sun VirtualBox</link>.</para>
+            <para>
+            <emphasis role="bold">VirtualBox Open Source Edition</emphasis>.
+            Provides enterprise-class virtualization capability for all major
+            platforms and is available free at
+            <link xl:href="https://www.virtualbox.org/wiki/Downloads">
+            https://www.virtualbox.org/wiki/Downloads</link>.</para>
           </listitem>
           <listitem>
-            <para><emphasis role="bold">VMware Server</emphasis> . Virtualization platform available as free introductory software at <link xl:href="http://downloads.vmware.com/d/info/datacenter_downloads/vmware_server/2_0">Download VMware Server</link>.</para>
+            <para><emphasis role="bold">VMware Server</emphasis>.
+            Virtualization platform available as free introductory software at
+            <link xl:href="https://my.vmware.com/web/vmware/downloads/">
+            https://my.vmware.com/web/vmware/downloads/</link>.</para>
           </listitem>
           <listitem>
-            <para><emphasis role="bold">Xen</emphasis> . A para-virtualized environment with virtualization capabilities similar to VMware Server and Virtual Box. However, Xen allows the use of modified kernels to provide near-native performance and the ability to emulate shared storage. For more information, go to <link xl:href="http://xen.org/">xen.org</link>.</para>
+            <para><emphasis role="bold">Xen</emphasis>. A para-virtualized
+            environment with virtualization capabilities similar to VMware
+            Server and Virtual Box. However, Xen allows the use of modified
+            kernels to provide near-native performance and the ability to
+            emulate shared storage. For more information, go to
+            <link xl:href="https://xen.org/">https://xen.org/</link>.</para>
           </listitem>
         </itemizedlist>
         <para>A variety of debuggers and analysis tools are available including:</para>
@@ -139,7 +202,14 @@ Lustre Debugging Tools</title>
           <listitem>
             <para><emphasis role="bold">
                 <literal>kgdb</literal>
-              </emphasis> . The Linux Kernel Source Level Debugger kgdb is used in conjunction with the GNU Debugger <literal>gdb</literal> for debugging the Linux kernel. For more information about using <literal>kgdb</literal> with <literal>gdb</literal>, see <link xl:href="http://www.linuxtopia.org/online_books/redhat_linux_debugging_with_gdb/running.html">Chapter 6. Running Programs Under gdb</link> in the <emphasis>Red Hat Linux 4 Debugging with GDB</emphasis> guide.</para>
+              </emphasis> . The Linux Kernel Source Level Debugger kgdb is
+              used in conjunction with the GNU Debugger <literal>gdb</literal>
+              for debugging the Linux kernel. For more information about using
+              <literal>kgdb</literal> with <literal>gdb</literal>, see
+              <link xl:href="https://www.linuxtopia.org/online_books/redhat_linux_debugging_with_gdb/running.html">
+              Chapter 6. Running Programs Under gdb</link> in the
+              <emphasis>Red Hat Linux 4 Debugging with GDB</emphasis> guide.
+            </para>
           </listitem>
           <listitem>
             <para><emphasis role="bold">
@@ -147,16 +217,10 @@ Lustre Debugging Tools</title>
               </emphasis> . Used to analyze saved crash dump data when a system had panicked or locked up or appears unresponsive. For more information about using crash to analyze a crash dump, see:</para>
             <itemizedlist>
               <listitem>
-                <para> Red Hat Magazine article: <link xl:href="http://magazine.redhat.com/2007/08/15/a-quick-overview-of-linux-kernel-crash-dump-analysis/">A quick overview of Linux kernel crash dump analysis</link></para>
-              </listitem>
-              <listitem>
-                <para><link xl:href="http://people.redhat.com/anderson/crash_whitepaper/#EXAMPLES">Crash Usage: A Case Study</link>  from the white paper <emphasis>Red Hat Crash Utility</emphasis> by David Anderson</para>
-              </listitem>
-              <listitem>
-                <para> Kernel Trap forum entry: <link xl:href="http://kerneltrap.org/node/5758">Linux: Kernel Crash Dumps</link></para>
-              </listitem>
-              <listitem>
-                <para> White paper: <link xl:href="http://www.google.com/url?sa=t&amp;source=web&amp;ct=res&amp;cd=8&amp;ved=0CCUQFjAH&amp;url=http%3A%2F%2Fwww.kernel.sg%2Fpapers%2Fcrash-dump-analysis.pdf&amp;rct=j&amp;q=redhat+crash+dump&amp;ei=6aQBS-ifK4T8tAPcjdiHCw&amp;usg=AFQjCNEk03E3GDtAsawG3gfpwc1gGNELAg">A Quick Overview of Linux Kernel Crash Dump Analysis</link></para>
+                <para> Overview on how to use crash by the author:
+                <link xl:href="https://crash-utility.github.io/crash_whitepaper.html">
+                White Paper: Red Hat Crash Utility</link>
+                </para>
               </listitem>
             </itemizedlist>
           </listitem>
@@ -171,12 +235,16 @@ Lustre Debugging Tools</title>
       <title><indexterm><primary>debugging</primary><secondary>message format</secondary></indexterm>Understanding the Lustre Debug Messaging Format</title>
       <para>Lustre debug messages are categorized by originating subsystem, message type, and location in the source code. For a list of subsystems and message types, see <xref linkend="dbdoclet.50438274_57603"/>.</para>
       <note>
-        <para>For a current list of subsystems and debug message types, see <literal>libcfs/include/libcfs/libcfs_debug.h</literal> in the Lustre tree</para>
+        <para>For a current list of subsystems and debug message types, see
+            <literal>libcfs/include/libcfs/libcfs_debug.h</literal> in the Lustre software
+          tree</para>
       </note>
       <para>The elements of a Lustre debug message are described in <xref linkend="dbdoclet.50438274_57177"/> Format of Lustre Debug Messages.</para>
       <section xml:id="dbdoclet.50438274_57603">
         <title>Lustre Debug Messages</title>
-        <para>Each Lustre debug message has the tag of the subsystem it originated in, the message type, and the location in the source code. The subsystems and debug types used in Lustre are as follows:</para>
+        <para>Each Lustre debug message has the tag of the subsystem it originated in, the message
+          type, and the location in the source code. The subsystems and debug types used are as
+          follows:</para>
         <itemizedlist>
           <listitem>
             <para>  Standard Subsystems:</para>
@@ -208,7 +276,7 @@ Lustre Debugging Tools</title>
                         <para> <emphasis role="bold">trace</emphasis></para>
                       </entry>
                       <entry>
-                        <para> Entry/Exit markers</para>
+                        <para> Function entry/exit markers</para>
                       </entry>
                     </row>
                     <row>
@@ -216,7 +284,7 @@ Lustre Debugging Tools</title>
                         <para> <emphasis role="bold">dlmtrace</emphasis></para>
                       </entry>
                       <entry>
-                        <para> Locking-related information</para>
+                        <para> Distributed locking-related information</para>
                       </entry>
                     </row>
                     <row>
@@ -237,50 +305,58 @@ Lustre Debugging Tools</title>
                     </row>
                     <row>
                       <entry>
-                        <para> <emphasis role="bold">ext2</emphasis></para>
+                        <para> <emphasis role="bold">malloc</emphasis></para>
                       </entry>
                       <entry>
-                        <para> Anything from the ext2_debug</para>
+                        <para> Memory allocation or free information</para>
                       </entry>
                     </row>
                     <row>
                       <entry>
-                        <para> <emphasis role="bold">malloc</emphasis></para>
+                        <para> <emphasis role="bold">cache</emphasis></para>
                       </entry>
                       <entry>
-                        <para> Print malloc or free information</para>
+                        <para> Cache-related information</para>
                       </entry>
                     </row>
                     <row>
                       <entry>
-                        <para> <emphasis role="bold">cache</emphasis></para>
+                        <para> <emphasis role="bold">info</emphasis></para>
                       </entry>
                       <entry>
-                        <para> Cache-related information</para>
+                        <para> Non-critical general information</para>
                       </entry>
                     </row>
                     <row>
                       <entry>
-                        <para> <emphasis role="bold">info</emphasis></para>
+                        <para> <emphasis role="bold">dentry</emphasis></para>
+                      </entry>
+                      <entry>
+                        <para> kernel namespace cache handling</para>
+                      </entry>
+                    </row>
+                    <row>
+                      <entry>
+                        <para> <emphasis role="bold">mmap</emphasis></para>
                       </entry>
                       <entry>
-                        <para> General information</para>
+                        <para> Memory-mapped IO interface</para>
                       </entry>
                     </row>
                     <row>
                       <entry>
-                        <para> <emphasis role="bold">ioctl</emphasis></para>
+                        <para> <emphasis role="bold">page</emphasis></para>
                       </entry>
                       <entry>
-                        <para> IOCTL-related information</para>
+                        <para> Page cache and bulk data transfers</para>
                       </entry>
                     </row>
                     <row>
                       <entry>
-                        <para> <emphasis role="bold">blocks</emphasis></para>
+                        <para> <emphasis role="bold">info</emphasis></para>
                       </entry>
                       <entry>
-                        <para> Ext2 block allocation information</para>
+                        <para> Miscellaneous informational messages</para>
                       </entry>
                     </row>
                     <row>
@@ -288,7 +364,15 @@ Lustre Debugging Tools</title>
                         <para> <emphasis role="bold">net</emphasis></para>
                       </entry>
                       <entry>
-                        <para> Networking</para>
+                        <para> LNet network related debugging</para>
+                      </entry>
+                    </row>
+                    <row>
+                      <entry>
+                        <para> <emphasis role="bold">console</emphasis></para>
+                      </entry>
+                      <entry>
+                        <para>Significant system events, printed to console</para>
                       </entry>
                     </row>
                     <row>
@@ -296,63 +380,106 @@ Lustre Debugging Tools</title>
                         <para> <emphasis role="bold">warning</emphasis></para>
                       </entry>
                       <entry>
-                        <para> &#160;</para>
+                        <para>Significant but non-fatal exceptions, printed
+                          to console</para>
                       </entry>
                     </row>
                     <row>
                       <entry>
-                        <para> <emphasis role="bold">buffs</emphasis></para>
+                        <para> <emphasis role="bold">error</emphasis></para>
                       </entry>
                       <entry>
-                        <para> &#160;</para>
+                        <para>Critical error messages, printed to console</para>
                       </entry>
                     </row>
                     <row>
                       <entry>
-                        <para> <emphasis role="bold">other</emphasis></para>
+                        <para> <emphasis role="bold">neterror</emphasis></para>
                       </entry>
                       <entry>
-                        <para> &#160;</para>
+                        <para>Significant LNet error messages</para>
                       </entry>
                     </row>
                     <row>
                       <entry>
-                        <para> <emphasis role="bold">dentry</emphasis></para>
+                        <para> <emphasis role="bold">emerg</emphasis></para>
                       </entry>
                       <entry>
-                        <para> &#160;</para>
+                        <para>Fatal system errors, printed to console</para>
                       </entry>
                     </row>
                     <row>
                       <entry>
-                        <para> <emphasis role="bold">portals</emphasis></para>
+                        <para><emphasis role="bold">config</emphasis></para>
                       </entry>
                       <entry>
-                        <para> Entry/Exit markers</para>
+                        <para>Configuration and setup, enabled by default</para>
                       </entry>
                     </row>
                     <row>
                       <entry>
-                        <para> <emphasis role="bold">page</emphasis></para>
+                        <para><emphasis role="bold">ha</emphasis></para>
                       </entry>
                       <entry>
-                        <para> Bulk page handling</para>
+                        <para>Failover and recovery-related information,
+                        enabled by default</para>
                       </entry>
                     </row>
                     <row>
                       <entry>
-                        <para> <emphasis role="bold">error</emphasis></para>
+                        <para><emphasis role="bold">hsm</emphasis></para>
                       </entry>
                       <entry>
-                        <para> Error messages</para>
+                        <para>Hierarchical space management/tiering</para>
                       </entry>
                     </row>
                     <row>
                       <entry>
-                        <para> <emphasis role="bold">emerg</emphasis></para>
+                        <para><emphasis role="bold">ioctl</emphasis></para>
                       </entry>
                       <entry>
-                        <para> &#160;</para>
+                        <para>IOCTL-related information, enabled by default</para>
+                      </entry>
+                    </row>
+                    <row>
+                      <entry>
+                        <para><emphasis role="bold">layout</emphasis></para>
+                      </entry>
+                      <entry>
+                        <para>File layout handling (PFL, FLR, DoM)</para>
+                      </entry>
+                    </row>
+                    <row>
+                      <entry>
+                        <para><emphasis role="bold">lfsck</emphasis></para>
+                      </entry>
+                      <entry>
+                        <para>Filesystem consistency checking, enabled by
+                        default</para>
+                      </entry>
+                    </row>
+                    <row>
+                      <entry>
+                        <para><emphasis role="bold">other</emphasis></para>
+                      </entry>
+                      <entry>
+                        <para>Miscellaneious other debug messages</para>
+                      </entry>
+                    </row>
+                    <row>
+                      <entry>
+                        <para><emphasis role="bold">quota</emphasis></para>
+                      </entry>
+                      <entry>
+                        <para>Space accounting and management</para>
+                      </entry>
+                    </row>
+                    <row>
+                      <entry>
+                        <para><emphasis role="bold">reada</emphasis></para>
+                      </entry>
+                      <entry>
+                        <para>Client readahead management</para>
                       </entry>
                     </row>
                     <row>
@@ -360,15 +487,31 @@ Lustre Debugging Tools</title>
                         <para> <emphasis role="bold">rpctrace</emphasis></para>
                       </entry>
                       <entry>
-                        <para> For distributed debugging</para>
+                        <para>Remote request/reply tracing and debugging</para>
                       </entry>
                     </row>
                     <row>
                       <entry>
-                        <para> <emphasis role="bold">ha</emphasis></para>
+                        <para><emphasis role="bold">sec</emphasis></para>
                       </entry>
                       <entry>
-                        <para> Failover and recovery-related information</para>
+                        <para>Security, Kerberos, Shared Secret Key handling</para>
+                      </entry>
+                    </row>
+                    <row>
+                      <entry>
+                        <para><emphasis role="bold">snapshot</emphasis></para>
+                      </entry>
+                      <entry>
+                        <para>Filesystem snapshot management</para>
+                      </entry>
+                    </row>
+                    <row>
+                      <entry>
+                        <para><emphasis role="bold">vfstrace</emphasis></para>
+                      </entry>
+                      <entry>
+                        <para>Kernel VFS interface operations</para>
                       </entry>
                     </row>
                   </tbody>
@@ -380,7 +523,11 @@ Lustre Debugging Tools</title>
       </section>
       <section xml:id="dbdoclet.50438274_57177">
         <title>Format of Lustre Debug Messages</title>
-        <para>Lustre uses the <literal>CDEBUG()</literal> and <literal>CERROR()</literal> macros to print the debug or error messages. To print the message, the <literal>CDEBUG()</literal> macro uses the function <literal>libcfs_debug_msg()</literal> (<literal>libcfs/libcfs/tracefile.c</literal>). The message format is described below, along with an example.</para>
+        <para>The Lustre software uses the <literal>CDEBUG()</literal> and
+            <literal>CERROR()</literal> macros to print the debug or error messages. To print the
+          message, the <literal>CDEBUG()</literal> macro uses the function
+            <literal>libcfs_debug_msg()</literal> (<literal>libcfs/libcfs/tracefile.c</literal>).
+          The message format is described below, along with an example.</para>
         <informaltable frame="all">
           <tgroup cols="2">
             <colspec colname="c1" colwidth="50*"/>
@@ -574,11 +721,13 @@ Debug log: 324 lines, 258 kept, 66 dropped.
     </section>
     <section remap="h3">
       <title><indexterm><primary>debugging</primary><secondary>kernel debug log</secondary></indexterm>Controlling Information Written to the Kernel Debug Log</title>
-      <para>The <literal>lctl set_param subsystem_debug=<replaceable>subsystem_mask</replaceable></literal> and <literal>lctl set_param debug=<replaceable>debug_mask</replaceable></literal> are used to determine which information is written to the debug log. The subsystem_debug mask determines the information written to the log based on the functional area of the code (such as lnet, osc, or ldlm). The debug mask controls information based on the message type (such as info, error, trace, or malloc).</para>
+      <para>The <literal>lctl set_param subsystem_debug=<replaceable>subsystem_mask</replaceable></literal> and <literal>lctl set_param debug=<replaceable>debug_mask</replaceable></literal> are used to determine which information is written to the debug log. The subsystem_debug mask determines the information written to the log based on the functional area of the code (such as lnet, osc, or ldlm). The debug mask controls information based on the message type (such as info, error, trace, or malloc). For a complete list of possible debug masks use the <literal>lctl debug_list types</literal> command.</para>
       <para>To turn off Lustre debugging completely:</para>
       <screen>lctl set_param debug=0 </screen>
       <para>To turn on full Lustre debugging:</para>
       <screen>lctl set_param debug=-1 </screen>
+      <para>To list all possible debug masks:</para>
+      <screen>lctl debug_list types</screen>
       <para>To log only messages related to network communications:</para>
       <screen>lctl set_param debug=net </screen>
       <para>To turn on logging of messages related to network communications and existing debug flags:</para>
@@ -600,18 +749,37 @@ Debug log: 324 lines, 258 kept, 66 dropped.
     </section>
     <section remap="h3">
       <title><indexterm><primary>debugging</primary><secondary>disk contents</secondary></indexterm>Looking at Disk Content</title>
-      <para>In Lustre, the inodes on the metadata server contain extended attributes (EAs) that store information about file striping. EAs contain a list of all object IDs and their locations (that is, the OST that stores them). The <literal>lfs</literal> tool can be used to obtain this information for a given file using the <literal>getstripe</literal> subcommand. Use a corresponding <literal>lfs setstripe</literal> command to specify striping attributes for a new file or directory.</para>
-      <para>The <literal>lfs getstripe</literal> command takes a Lustre filename as input and lists all the objects that form a part of this file. To obtain this information for the file <literal>/mnt/lustre/frog</literal> in Lustre file system, run:</para>
-      <screen>$ lfs getstripe /mnt/lustre/frog
+      <para>In a Lustre file system, the inodes on the metadata server contain extended attributes
+        (EAs) that store information about file striping. EAs contain a list of all object IDs and
+        their locations (that is, the OST that stores them). The <literal>lfs</literal> tool can be
+        used to obtain this information for a given file using the <literal>getstripe</literal>
+        subcommand. Use a corresponding <literal>lfs setstripe</literal> command to specify striping
+        attributes for a new file or directory.</para>
+      <para>The <literal>lfs getstripe</literal> command takes a Lustre filename as input and lists
+        all the objects that form a part of this file. To obtain this information for the file
+          <literal>/mnt/testfs/frog</literal> in a Lustre file system, run:</para>
+      <screen>$ lfs getstripe /mnt/testfs/frog
 lmm_stripe_count:   2
 lmm_stripe_size:    1048576
+lmm_pattern:        1
+lmm_layout_gen:     0
 lmm_stripe_offset:  2
         obdidx           objid          objid           group
              2          818855        0xc7ea7               0
              0          873123        0xd52a3               0
         </screen>
-      <para>The <literal>debugfs</literal> tool is provided in the <literal>e2fsprogs</literal> package. It can be used for interactive debugging of an <literal>ldiskfs</literal> file system. The <literal>debugfs</literal> tool can either be used to check status or modify information in the file system. In Lustre, all objects that belong to a file are stored in an underlying <literal>ldiskfs</literal> file system on the OSTs. The file system uses the object IDs as the file names. Once the object IDs are known, use the <literal>debugfs</literal> tool to obtain the attributes of all objects from different OSTs.</para>
-      <para>A sample run for the <literal>/mnt/lustre/frog</literal> file used in the above example is shown here:</para>
+      <para>The <literal>debugfs</literal> tool is provided in the
+          <literal>e2fsprogs</literal> package. It can be used for interactive
+          debugging of an <literal>ldiskfs</literal> file system. The
+          <literal>debugfs</literal> tool can either be used to check status or
+          modify information in the file system. In a Lustre file system, all
+          objects that belong to a file are stored in an underlying
+          <literal>ldiskfs</literal> file system on the OSTs. The file system
+          uses the object IDs as the file names. Once the object IDs are known,
+          use the <literal>debugfs</literal> tool to obtain the attributes of
+          all objects from different OSTs.</para>
+      <para>A sample run for the <literal>/mnt/testfs/frog</literal> file used
+          in the above example is shown here:</para>
       <screen>$ debugfs -c -R "stat O/0/d$((818855 % 32))/818855" /dev/vgmyth/lvmythost2
 
 debugfs 1.41.90.wc3 (28-May-2011)
@@ -642,7 +810,8 @@ EXTENTS:
 strings /tmp/last_rcvd | head -1
 myth-OST0004_UUID
       </screen>
-      <para>It is also possible (and easier) to extract this from the filesystem label using the <literal>dumpe2fs</literal> command:</para>
+      <para>It is also possible (and easier) to extract this from the file system label using the
+          <literal>dumpe2fs</literal> command:</para>
       <screen>dumpe2fs -h /dev/sdc | grep volume
 dumpe2fs 1.41.90.wc3 (28-May-2011)
 Filesystem volume name:   myth-OST0004
@@ -658,15 +827,24 @@ Filesystem volume name:   myth-OST0004
     </section>
     <section remap="h3">
       <title>Tracing Lock Traffic</title>
-      <para>Lustre has a specific debug type category for tracing lock traffic. Use:</para>
+      <para>The Lustre software provides a specific debug type category for tracing lock traffic.
+        Use:</para>
       <screen>lctl&gt; filter all_types 
 lctl&gt; show dlmtrace 
 lctl&gt; debug_kernel [<replaceable>filename</replaceable>] </screen>
     </section>
+    <section remap="h3">
+      <title>Controlling Console Message Rate Limiting</title>
+      <para>Some console messages which are printed by Lustre are rate limited.  When such messages are printed, they may be followed by a message saying "Skipped N previous similar message(s)," where N is the number of messages skipped.  This rate limiting can be completely disabled by a libcfs module parameter called <literal>libcfs_console_ratelimit</literal>.  To disable console message rate limiting, add this line to <literal>/etc/modprobe.d/lustre.conf</literal> and then reload Lustre modules.</para>
+      <screen>options libcfs libcfs_console_ratelimit=0</screen>
+      <para>It is also possible to set the minimum and maximum delays between rate-limited console messages using the module parameters <literal>libcfs_console_max_delay</literal> and <literal>libcfs_console_min_delay</literal>.  Set these in <literal>/etc/modprobe.d/lustre.conf</literal> and then reload Lustre modules.  Additional information on libcfs module parameters is available via <literal>modinfo</literal>:</para>
+      <screen>modinfo libcfs</screen>
+    </section>
   </section>
   <section xml:id="dbdoclet.50438274_80443">
     <title><indexterm><primary>debugging</primary><secondary>developers tools</secondary></indexterm>Lustre Debugging for Developers</title>
-    <para>The procedures in this section may be useful to developers debugging Lustre code.</para>
+    <para>The procedures in this section may be useful to developers debugging Lustre source
+      code.</para>
     <section remap="h3">
       <title>Adding Debugging to the Lustre Source Code</title>
       <para>The debugging infrastructure provides a number of macros that can be used in Lustre source code to aid in debugging or reporting serious errors.</para>
@@ -695,7 +873,11 @@ lctl&gt; debug_kernel [<replaceable>filename</replaceable>] </screen>
                   </emphasis></para>
               </entry>
               <entry>
-                <para>A panic-style assertion in the kernel which causes Lustre to dump its circular log to the <literal>/tmp/lustre-log</literal> file. This file can be retrieved after a reboot. <literal>LBUG()</literal> freezes the thread to allow capture of the panic stack. A system reboot is needed to clear the thread.</para>
+                <para>A panic-style assertion in the kernel which causes the Lustre file system to
+                  dump its circular log to the <literal>/tmp/lustre-log</literal> file. This file
+                  can be retrieved after a reboot. <literal>LBUG()</literal> freezes the thread to
+                  allow capture of the panic stack. A system reboot is needed to clear the
+                  thread.</para>
               </entry>
             </row>
             <row>
@@ -768,7 +950,7 @@ lctl&gt; debug_kernel [<replaceable>filename</replaceable>] </screen>
                   </emphasis></para>
               </entry>
               <entry>
-                <para> Behaves similarly to <literal>CERROR()</literal>, but prints error messages for LNET if <literal>D_NETERR</literal> is set in the <literal>debug</literal> mask. This is appropriate for serious networking errors. Messages printed to the console are rate-limited.</para>
+                <para> Behaves similarly to <literal>CERROR()</literal>, but prints error messages for LNet if <literal>D_NETERR</literal> is set in the <literal>debug</literal> mask. This is appropriate for serious networking errors. Messages printed to the console are rate-limited.</para>
               </entry>
             </row>
             <row>
@@ -842,7 +1024,12 @@ lctl&gt; debug_kernel [<replaceable>filename</replaceable>] </screen>
                   </emphasis></para>
               </entry>
               <entry>
-                <para>Allows insertion of failure points into the Lustre code. This is useful to generate regression tests that can hit a very specific sequence of events. This works in conjunction with &quot;<literal>lctl set_param fail_loc=<replaceable>fail_loc</replaceable></literal>&quot; to set a specific failure point for which a given <literal>OBD_FAIL_CHECK()</literal> will test.</para>
+                <para>Allows insertion of failure points into the Lustre source code. This is useful
+                  to generate regression tests that can hit a very specific sequence of events. This
+                  works in conjunction with &quot;<literal>lctl set_param
+                      fail_loc=<replaceable>fail_loc</replaceable></literal>&quot; to set a specific
+                  failure point for which a given <literal>OBD_FAIL_CHECK()</literal> will
+                  test.</para>
               </entry>
             </row>
             <row>
@@ -912,7 +1099,7 @@ lctl&gt; debug_kernel [<replaceable>filename</replaceable>] </screen>
     <section remap="h3">
       <title>Accessing the <literal>ptlrpc</literal> Request History</title>
       <para>Each service maintains a request history, which can be useful for first occurrence troubleshooting.</para>
-      <para><literal>ptlrpc</literal> is an RPC protocol layered on LNET that deals with stateful servers and has semantics and built-in support for recovery.</para>
+      <para><literal>ptlrpc</literal> is an RPC protocol layered on LNet that deals with stateful servers and has semantics and built-in support for recovery.</para>
       <para>The ptlrpc request history works as follows:</para>
       <orderedlist>
         <listitem>
@@ -925,7 +1112,7 @@ lctl&gt; debug_kernel [<replaceable>filename</replaceable>] </screen>
           <para>Buffers are culled from the service request buffer history if it has grown above <literal>req_buffer_history_max</literal> and its reqs are removed from the service request history.</para>
         </listitem>
       </orderedlist>
-      <para>Request history is accessed and controlled using the following /proc files under the service directory:</para>
+      <para>Request history is accessed and controlled using the following parameters for each service:</para>
       <itemizedlist>
         <listitem>
           <para><literal>req_buffer_history_len </literal></para>
@@ -1073,3 +1260,6 @@ freed 8bytes at a3116744 (called pathcopy)
     </section>
   </section>
 </chapter>
+<!--
+  vim:expandtab:shiftwidth=2:tabstop=8:
+  -->