<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://ideas.reserved-bit.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nisha</id>
		<title>reserved-bit ideas wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://ideas.reserved-bit.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nisha"/>
		<link rel="alternate" type="text/html" href="https://ideas.reserved-bit.com/w/Special:Contributions/Nisha"/>
		<updated>2026-04-04T14:59:09Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.26.3</generator>

	<entry>
		<id>https://ideas.reserved-bit.com/index.php?title=Kernel_crash_dump_session_write-up_-_April_2017_meetup&amp;diff=61</id>
		<title>Kernel crash dump session write-up - April 2017 meetup</title>
		<link rel="alternate" type="text/html" href="https://ideas.reserved-bit.com/index.php?title=Kernel_crash_dump_session_write-up_-_April_2017_meetup&amp;diff=61"/>
				<updated>2017-05-17T10:13:15Z</updated>
		
		<summary type="html">&lt;p&gt;Nisha: /* Bansal&amp;#039;s crash talk.  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;This is a write-up of the kernel crash dump session contributed by Nitin Bansal.  The original email is [http://lists.reserved-bit.com/pipermail/kernel-meetup-reserved-bit.com/2017-April/000080.html here].&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
I attended the Pune Kernel Meetup on 8th April and presented a session on&lt;br /&gt;
Kernel crash dump (vmcore) analysis. In this write-up I have tried to explain a&lt;br /&gt;
few things about the vmcore analysis, hope it helps. &lt;br /&gt;
&lt;br /&gt;
Before starting with the vmcore analysis, we need following three things:&lt;br /&gt;
&lt;br /&gt;
* crash utility [https://people.redhat.com/anderson/crash_whitepaper/]&lt;br /&gt;
* vmlinux&lt;br /&gt;
* vmcore&lt;br /&gt;
 &lt;br /&gt;
vmlinux can be obtained from kernel-debuginfo (for Red Hat Enterprise Linux&lt;br /&gt;
(RHEL) at least). One can either install kernel-debuginfo or simply extract&lt;br /&gt;
vmlinux file using rpm2cpio:&lt;br /&gt;
&lt;br /&gt;
 # yum install kernel-debuginfo-2.6.32-642.13.1.el6.x86_64&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
 # rpm2cpio kernel-debuginfo-2.6.32-642.13.1.el6.x86_64.rpm | cpio -idv ./usr/lib/debug/lib/modules/2.6.32-642.13.1.el6.x86_64/vmlinux&lt;br /&gt;
&lt;br /&gt;
vmcore was collected from kernel-2.6.32-642.13.1.el6 so vmlinux from debuginfo&lt;br /&gt;
package of same version is required. &lt;br /&gt;
&lt;br /&gt;
Now let&amp;#039;s use &amp;quot;crash&amp;quot; utility to open this vmcore, which after printing a few&lt;br /&gt;
details i.e. copyright information, GDB version information etc drops us to&lt;br /&gt;
&amp;quot;crash&amp;gt;&amp;quot; prompt:&lt;br /&gt;
&lt;br /&gt;
 # crash /usr/lib/debug/lib/modules/2.6.32-642.13.1.el6.x86_64/vmlinux  vmcore&lt;br /&gt;
&lt;br /&gt;
 crash 7.1.0-6.el6&lt;br /&gt;
 ..&lt;br /&gt;
 GNU gdb (GDB) 7.6&lt;br /&gt;
 Copyright (C) 2013 Free Software Foundation, Inc.&lt;br /&gt;
 License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
 This is free software: you are free to change and redistribute it.&lt;br /&gt;
 There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
 and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
 This GDB was configured as &amp;quot;x86_64-unknown-linux-gnu&amp;quot;...&lt;br /&gt;
 &lt;br /&gt;
       KERNEL: /usr/lib/debug/lib/modules/2.6.32-642.13.1.el6.x86_64/vmlinux&lt;br /&gt;
     DUMPFILE: vmcore  [PARTIAL DUMP]&lt;br /&gt;
         CPUS: 2&lt;br /&gt;
         DATE: Fri Mar 31 11:15:47 2017&lt;br /&gt;
       UPTIME: 00:06:01&lt;br /&gt;
 LOAD AVERAGE: 0.40, 0.30, 0.13&lt;br /&gt;
        TASKS: 232&lt;br /&gt;
     NODENAME: rhel6&lt;br /&gt;
      RELEASE: 2.6.32-642.13.1.el6.x86_64&lt;br /&gt;
      VERSION: #1 SMP Wed Nov 23 16:03:01 EST 2016&lt;br /&gt;
      MACHINE: x86_64  (2808 Mhz)&lt;br /&gt;
       MEMORY: 2 GB&lt;br /&gt;
        PANIC: &amp;quot;Kernel panic - not syncing: hung_task: blocked tasks&amp;quot;&lt;br /&gt;
          PID: 46&lt;br /&gt;
      COMMAND: &amp;quot;khungtaskd&amp;quot;&lt;br /&gt;
         TASK: ffff880078d16ab0  [THREAD_INFO: ffff880078d20000]&lt;br /&gt;
          CPU: 1&lt;br /&gt;
        STATE: TASK_RUNNING (PANIC) &lt;br /&gt;
&lt;br /&gt;
 crash&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;sys&amp;quot; command can be used to print most of the information that crash prints&lt;br /&gt;
when invoked e.g.:&lt;br /&gt;
&lt;br /&gt;
 crash&amp;gt; sys&lt;br /&gt;
       KERNEL: /usr/lib/debug/lib/modules/2.6.32-642.13.1.el6.x86_64/vmlinux&lt;br /&gt;
     DUMPFILE: vmcore  [PARTIAL DUMP]&lt;br /&gt;
         CPUS: 2&lt;br /&gt;
         DATE: Fri Mar 31 11:15:47 2017&lt;br /&gt;
       UPTIME: 00:06:01&lt;br /&gt;
 LOAD AVERAGE: 0.40, 0.30, 0.13&lt;br /&gt;
        TASKS: 232&lt;br /&gt;
     NODENAME: rhel6&lt;br /&gt;
      RELEASE: 2.6.32-642.13.1.el6.x86_64&lt;br /&gt;
      VERSION: #1 SMP Wed Nov 23 16:03:01 EST 2016&lt;br /&gt;
      MACHINE: x86_64  (2808 Mhz)&lt;br /&gt;
       MEMORY: 2 GB&lt;br /&gt;
        PANIC: &amp;quot;Kernel panic - not syncing: hung_task: blocked tasks&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To list all the available crash commands, type &amp;quot;?&amp;quot; and hit enter:&lt;br /&gt;
&lt;br /&gt;
 crash&amp;gt; ? &lt;br /&gt;
&lt;br /&gt;
 *              files          mach           repeat         timer          &lt;br /&gt;
 alias          foreach        mod            runq           tree           &lt;br /&gt;
 ascii          fuser          mount          search         union          &lt;br /&gt;
 bt             gdb            net            set            vm             &lt;br /&gt;
 btop           help           p              sig            vtop           &lt;br /&gt;
 dev            ipcs           ps             struct         waitq          &lt;br /&gt;
 dis            irq            pte            swap           whatis         &lt;br /&gt;
 eval           kmem           ptob           sym            wr             &lt;br /&gt;
 exit           list           ptov           sys            q              &lt;br /&gt;
 extend         log            rd             task           &lt;br /&gt;
&lt;br /&gt;
Use &amp;quot;help&amp;quot; to get details about a command and parameters it accepts e.g.:&lt;br /&gt;
&lt;br /&gt;
 crash&amp;gt; help sys&lt;br /&gt;
&lt;br /&gt;
Now, let&amp;#039;s examine kernel ring buffer (that&amp;#039;s where we find panic message) with&lt;br /&gt;
the help of &amp;quot;log&amp;quot; command. &lt;br /&gt;
&lt;br /&gt;
And following is the panic message, which tells us that khungtaskd crashed the&lt;br /&gt;
system:&lt;br /&gt;
&lt;br /&gt;
 Call Trace:&lt;br /&gt;
  &amp;lt;#DB[1]&amp;gt;  &amp;lt;&amp;lt;EOE&amp;gt;&amp;gt; Pid: 46, comm: khungtaskd Not tainted 2.6.32-642.13.1.el6.x86_64 #1&lt;br /&gt;
 Call Trace:&lt;br /&gt;
  &amp;lt;NMI&amp;gt;  [&amp;lt;ffffffff81009c47&amp;gt;] ? show_regs+0x27/0x30&lt;br /&gt;
  [&amp;lt;ffffffff8154d909&amp;gt;] ? arch_trigger_all_cpu_backtrace_handler+0x99/0xc0&lt;br /&gt;
  [&amp;lt;ffffffff8154f1a5&amp;gt;] ? notifier_call_chain+0x55/0x80&lt;br /&gt;
  [&amp;lt;ffffffff8154f20a&amp;gt;] ? atomic_notifier_call_chain+0x1a/0x20&lt;br /&gt;
  [&amp;lt;ffffffff810acc8e&amp;gt;] ? notify_die+0x2e/0x30&lt;br /&gt;
  [&amp;lt;ffffffff8154ce23&amp;gt;] ? do_nmi+0x1c3/0x350&lt;br /&gt;
  [&amp;lt;ffffffff8154c6e3&amp;gt;] ? nmi+0x83/0x90&lt;br /&gt;
  [&amp;lt;ffffffff8104615a&amp;gt;] ? native_write_msr_safe+0xa/0x10&lt;br /&gt;
  &amp;lt;&amp;lt;EOE&amp;gt;&amp;gt;  [&amp;lt;ffffffff8103e92c&amp;gt;] ? x2apic_send_IPI_mask+0x6c/0xb0&lt;br /&gt;
  [&amp;lt;ffffffff81039b9a&amp;gt;] ? arch_trigger_all_cpu_backtrace+0x27a/0x2c0&lt;br /&gt;
  [&amp;lt;ffffffff810f2740&amp;gt;] ? watchdog+0x250/0x2a0&lt;br /&gt;
  [&amp;lt;ffffffff810f24f0&amp;gt;] ? watchdog+0x0/0x2a0&lt;br /&gt;
  [&amp;lt;ffffffff810a640e&amp;gt;] ? kthread+0x9e/0xc0&lt;br /&gt;
  [&amp;lt;ffffffff8100c28a&amp;gt;] ? child_rip+0xa/0x20&lt;br /&gt;
  [&amp;lt;ffffffff810a6370&amp;gt;] ? kthread+0x0/0xc0&lt;br /&gt;
  [&amp;lt;ffffffff8100c280&amp;gt;] ? child_rip+0x0/0x20&lt;br /&gt;
 Kernel panic - not syncing: hung_task: blocked tasks&lt;br /&gt;
 Pid: 46, comm: khungtaskd Not tainted 2.6.32-642.13.1.el6.x86_64 #1&lt;br /&gt;
 Call Trace:&lt;br /&gt;
  [&amp;lt;ffffffff81548301&amp;gt;] ? panic+0xa7/0x179&lt;br /&gt;
  [&amp;lt;ffffffff81039aa5&amp;gt;] ? arch_trigger_all_cpu_backtrace+0x185/0x2c0&lt;br /&gt;
  [&amp;lt;ffffffff810f274e&amp;gt;] ? watchdog+0x25e/0x2a0&lt;br /&gt;
  [&amp;lt;ffffffff810f24f0&amp;gt;] ? watchdog+0x0/0x2a0&lt;br /&gt;
  [&amp;lt;ffffffff810a640e&amp;gt;] ? kthread+0x9e/0xc0&lt;br /&gt;
  [&amp;lt;ffffffff8100c28a&amp;gt;] ? child_rip+0xa/0x20&lt;br /&gt;
  [&amp;lt;ffffffff810a6370&amp;gt;] ? kthread+0x0/0xc0&lt;br /&gt;
  [&amp;lt;ffffffff8100c280&amp;gt;] ? child_rip+0x0/0x20&lt;br /&gt;
&lt;br /&gt;
khungtaskd is a kernel thread which checks for uninterruptible tasks, few&lt;br /&gt;
relevant snips from kernel/hung_task.c:&lt;br /&gt;
&lt;br /&gt;
 static int __init hung_task_init(void)&lt;br /&gt;
 {&lt;br /&gt;
         atomic_notifier_chain_register(&amp;amp;panic_notifier_list, &amp;amp;panic_block);&lt;br /&gt;
         watchdog_task = kthread_run(watchdog, NULL, &amp;quot;khungtaskd&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
         return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 ..&lt;br /&gt;
 &lt;br /&gt;
 static int watchdog(void *dummy)&lt;br /&gt;
 {&lt;br /&gt;
         set_user_nice(current, 0); &lt;br /&gt;
  &lt;br /&gt;
         for ( ; ; ) {&lt;br /&gt;
                 unsigned long timeout = sysctl_hung_task_timeout_secs;      &lt;br /&gt;
 &lt;br /&gt;
                 while (schedule_timeout_interruptible(timeout_jiffies(timeout)))&lt;br /&gt;
                         timeout = sysctl_hung_task_timeout_secs; &lt;br /&gt;
 &lt;br /&gt;
                 check_hung_uninterruptible_tasks(timeout);&lt;br /&gt;
         } &lt;br /&gt;
 &lt;br /&gt;
         return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
By scrolling back a bit in ring buffer a hung_task_timeout_secs warning can be&lt;br /&gt;
seen along with the following backtrace:&lt;br /&gt;
&lt;br /&gt;
 1 &amp;gt; INFO: task dd:7224 blocked for more than 10 seconds.&lt;br /&gt;
 2 &amp;gt;      Not tainted 2.6.32-642.13.1.el6.x86_64 #1&lt;br /&gt;
 3 &amp;gt; &amp;quot;echo 0 &amp;gt; /proc/sys/kernel/hung_task_timeout_secs&amp;quot; disables this message.&lt;br /&gt;
 4&amp;gt; dd            D 0000000000000001     0  7224   6702 0x00000080&lt;br /&gt;
  ffff88007c473ce8 0000000000000082 0000000000000000 0000000000000000&lt;br /&gt;
  0000000000000000 0000000000000000 0000000000000000 0000000000000000&lt;br /&gt;
  0000000000000000 0000000000000000 ffff880037b71068 ffff88007c473fd8&lt;br /&gt;
 5&amp;gt; Call Trace:&lt;br /&gt;
  [&amp;lt;ffffffff810a6bce&amp;gt;] ? prepare_to_wait+0x4e/0x80&lt;br /&gt;
  [&amp;lt;ffffffff8119bdfc&amp;gt;] __sb_start_write+0xdc/0x120&lt;br /&gt;
  [&amp;lt;ffffffff810a68a0&amp;gt;] ? autoremove_wake_function+0x0/0x40&lt;br /&gt;
  [&amp;lt;ffffffff811bcc14&amp;gt;] mnt_want_write+0x24/0x50&lt;br /&gt;
  [&amp;lt;ffffffff8119b348&amp;gt;] ? get_empty_filp+0xe8/0x190&lt;br /&gt;
  [&amp;lt;ffffffff811aca99&amp;gt;] do_filp_open+0x2b9/0xd20&lt;br /&gt;
  [&amp;lt;ffffffff812a885a&amp;gt;] ? strncpy_from_user+0x4a/0x90&lt;br /&gt;
  [&amp;lt;ffffffff811ba072&amp;gt;] ? alloc_fd+0x92/0x160&lt;br /&gt;
  [&amp;lt;ffffffff811969f7&amp;gt;] do_sys_open+0x67/0x130&lt;br /&gt;
  [&amp;lt;ffffffff81196b00&amp;gt;] sys_open+0x20/0x30&lt;br /&gt;
  [&amp;lt;ffffffff8100b0d2&amp;gt;] system_call_fastpath+0x16/0x1b&lt;br /&gt;
&lt;br /&gt;
Let&amp;#039;s look at it line by line:&lt;br /&gt;
&lt;br /&gt;
* Line 1 shows that dd PID 7224 was blocked for more than 10 seconds.&lt;br /&gt;
* Line 2 tells us the kernel version and that it is not tainted (i.e. no third&lt;br /&gt;
party modules are loaded etc.).&lt;br /&gt;
* Line 3 is just telling us how to disable this message, not a great idea IMO.&lt;br /&gt;
* Line 4 contains command name, state, PID etc.&lt;br /&gt;
* Line 5 shows the associated call trace which suggests that dd became&lt;br /&gt;
uninterruptible while trying to write to a filesystem.&lt;br /&gt;
&lt;br /&gt;
Process details can be checked using &amp;quot;ps&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 crash&amp;gt; ps -m | grep UN&lt;br /&gt;
 [0 00:00:14.117] [UN]  PID: 7224   TASK: ffff880037b70ab0  CPU: 1   COMMAND: &amp;quot;dd&amp;quot;&lt;br /&gt;
 ^^^^^^^^^^^^^^^^&lt;br /&gt;
      |_____This is the duration of dd in uninterruptible state (14.117 seconds)&lt;br /&gt;
&lt;br /&gt;
-m switch displays timestamp in days, hours, minutes, seconds and milliseconds. &lt;br /&gt;
&lt;br /&gt;
Next step is to examine dd process, in order to do that, we first need to&lt;br /&gt;
change the process context (currently it is set to khungtaskd and needs to be&lt;br /&gt;
switched to dd), which can be done using &amp;quot;set&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 crash&amp;gt; set 7224&lt;br /&gt;
     PID: 7224&lt;br /&gt;
 COMMAND: &amp;quot;dd&amp;quot;&lt;br /&gt;
    TASK: ffff880037b70ab0  [THREAD_INFO: ffff88007c470000]&lt;br /&gt;
     CPU: 1&lt;br /&gt;
   STATE: TASK_UNINTERRUPTIBLE &lt;br /&gt;
&lt;br /&gt;
Let&amp;#039;s print backtrace along with kernel source line numbers (source line&lt;br /&gt;
numbers probably wouldn&amp;#039;t be displayed if kernel-debuginfo is not installed):&lt;br /&gt;
&lt;br /&gt;
 crash&amp;gt; bt -l&lt;br /&gt;
 PID: 7224   TASK: ffff880037b70ab0  CPU: 1   COMMAND: &amp;quot;dd&amp;quot;&lt;br /&gt;
  #0 [ffff88007c473c18] schedule at ffffffff815489d0&lt;br /&gt;
     /usr/src/debug/kernel-2.6.32-642.13.1.el6/linux-2.6.32-642.13.1.el6.x86_64/kernel/sched.c: 3119&lt;br /&gt;
  #1 [ffff88007c473cf0] __sb_start_write at ffffffff8119bdfc&lt;br /&gt;
     /usr/src/debug/kernel-2.6.32-642.13.1.el6/linux-2.6.32-642.13.1.el6.x86_64/fs/super.c: 677&lt;br /&gt;
  #2 [ffff88007c473d80] mnt_want_write at ffffffff811bcc14&lt;br /&gt;
     /usr/src/debug/kernel-2.6.32-642.13.1.el6/linux-2.6.32-642.13.1.el6.x86_64/fs/namespace.c: 300&lt;br /&gt;
  #3 [ffff88007c473db0] do_filp_open at ffffffff811aca99&lt;br /&gt;
     /usr/src/debug/kernel-2.6.32-642.13.1.el6/linux-2.6.32-642.13.1.el6.x86_64/fs/namei.c: 2267&lt;br /&gt;
  #4 [ffff88007c473f20] do_sys_open at ffffffff811969f7&lt;br /&gt;
     /usr/src/debug/kernel-2.6.32-642.13.1.el6/linux-2.6.32-642.13.1.el6.x86_64/fs/open.c: 908&lt;br /&gt;
  #5 [ffff88007c473f70] sys_open at ffffffff81196b00&lt;br /&gt;
     /usr/src/debug/kernel-2.6.32-642.13.1.el6/linux-2.6.32-642.13.1.el6.x86_64/fs/open.c: 932&lt;br /&gt;
  #6 [ffff88007c473f80] system_call_fastpath at ffffffff8100b0d2&lt;br /&gt;
     /usr/src/debug/kernel-2.6.32-642.13.1.el6/linux-2.6.32-642.13.1.el6.x86_64/arch/x86/kernel/entry_64.S: 492&lt;br /&gt;
     RIP: 000000358a8db480  RSP: 00007ffcd7d37ca8  RFLAGS: 00010246&lt;br /&gt;
     RAX: 0000000000000002  RBX: ffffffff8100b0d2  RCX: 0000000000000000&lt;br /&gt;
     RDX: 00000000000001b6  RSI: 0000000000000241  RDI: 00007ffcd7d3870b&lt;br /&gt;
     RBP: 0000000000000240   R8: 000000358ab8ee40   R9: 00007ffaa33c368c&lt;br /&gt;
     R10: 1999999999999999  R11: 0000000000000246  R12: ffffffff81196b00&lt;br /&gt;
     R13: ffff88007c473f78  R14: ffffffffffffffff  R15: 0000000000000064&lt;br /&gt;
     ORIG_RAX: 0000000000000002  CS: 0033  SS: 002b &lt;br /&gt;
&lt;br /&gt;
This backtrace needs to be read from bottom to top, following chain shows how&lt;br /&gt;
these functions were called:&lt;br /&gt;
&lt;br /&gt;
 921 SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, int, mode)&lt;br /&gt;
 922 {&lt;br /&gt;
 923     long ret;&lt;br /&gt;
 924 &lt;br /&gt;
 925     if (force_o_largefile())&lt;br /&gt;
 926         flags |= O_LARGEFILE;&lt;br /&gt;
 927 &lt;br /&gt;
 928     ret = do_sys_open(AT_FDCWD, filename, flags, mode);--------------------&lt;br /&gt;
                                                                                | &lt;br /&gt;
                ----------------------------------------------------------------&lt;br /&gt;
                |                                         &lt;br /&gt;
 899 long do_sys_open(int dfd, const char __user *filename, int flags, int mode)&lt;br /&gt;
 900 {&lt;br /&gt;
 901     struct filename *tmp = getname(filename);&lt;br /&gt;
 902     int fd = PTR_ERR(tmp);&lt;br /&gt;
 903 &lt;br /&gt;
 904     if (!IS_ERR(tmp)) {&lt;br /&gt;
 905         fd = get_unused_fd_flags(flags);&lt;br /&gt;
 906         if (fd &amp;gt;= 0) {&lt;br /&gt;
 907             struct file *f = do_filp_open(dfd, tmp, flags, mode, 0); ------&lt;br /&gt;
                                                                                |&lt;br /&gt;
                       ---------------------------------------------------------&lt;br /&gt;
                      |&lt;br /&gt;
 2166 struct file *do_filp_open(int dfd, struct filename *filename,&lt;br /&gt;
 2167         int open_flag, int mode, int acc_mode)&lt;br /&gt;
 2168 {&lt;br /&gt;
 2169     struct file *filp;&lt;br /&gt;
 ..&lt;br /&gt;
 ..&lt;br /&gt;
 2256     /*&lt;br /&gt;
 2257      * This write is needed to ensure that a&lt;br /&gt;
 2258      * ro-&amp;gt;rw transition does not occur between&lt;br /&gt;
 2259      * the time when the file is created and when&lt;br /&gt;
 2260      * a permanent write count is taken through&lt;br /&gt;
 2261      * the &amp;#039;struct file&amp;#039; in nameidata_to_filp().&lt;br /&gt;
 2262      */&lt;br /&gt;
 2263     error = mnt_want_write(nd.path.mnt); ----------------------------------&lt;br /&gt;
                                                                                |&lt;br /&gt;
               -----------------------------------------------------------------&lt;br /&gt;
              |&lt;br /&gt;
 295 int mnt_want_write(struct vfsmount *m)&lt;br /&gt;
 296 {&lt;br /&gt;
 297     int ret;&lt;br /&gt;
 298 &lt;br /&gt;
 299     sb_start_write(m-&amp;gt;mnt_sb);  -------------------------------------------&lt;br /&gt;
                                                                                |&lt;br /&gt;
                               -------------------------------------------------&lt;br /&gt;
                              |&lt;br /&gt;
 1569 static inline void sb_start_write(struct super_block *sb)&lt;br /&gt;
 1570 {&lt;br /&gt;
 1571     __sb_start_write(sb, SB_FREEZE_WRITE, true); --------------------------&lt;br /&gt;
                                                                                |&lt;br /&gt;
                ----------------------------------------------------------------&lt;br /&gt;
               |&lt;br /&gt;
 668 int __sb_start_write(struct super_block *sb, int level, bool wait)&lt;br /&gt;
 669 {   &lt;br /&gt;
 670     /* Out of tree modules don&amp;#039;t use this mechanism */&lt;br /&gt;
 671     if (unlikely(!sb_has_new_freeze(sb)))&lt;br /&gt;
 672         return 1;&lt;br /&gt;
 673 retry:&lt;br /&gt;
 674     if (unlikely(sb-&amp;gt;s_writers.frozen &amp;gt;= level)) {&lt;br /&gt;
 675         if (!wait)&lt;br /&gt;
 676             return 0;&lt;br /&gt;
 677         wait_event(sb-&amp;gt;s_writers.wait_unfrozen,  &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; dd was here&lt;br /&gt;
 678                sb-&amp;gt;s_writers.frozen &amp;lt; level);&lt;br /&gt;
 679     }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In short, mnt_want_write() called sb_start_write() which then called&lt;br /&gt;
__sb_start_write(), and dd was waiting at line 677 in __sb_start_write() when&lt;br /&gt;
this vmcore was collected.&lt;br /&gt;
&lt;br /&gt;
From this code it is clear that dd was trying to write to a filesystem but&lt;br /&gt;
somehow it couldn&amp;#039;t and became uninterruptible, now we need to find out which&lt;br /&gt;
filesystem it was and why dd couldn&amp;#039;t write to it. Can we do it? Yes,&lt;br /&gt;
absolutely, if we can determine the first argument i.e. super_block that is&lt;br /&gt;
passed to __sb_start_write(), it will tell us about the filesystem/mount-point. &lt;br /&gt;
&lt;br /&gt;
If we go back to backtrace, we can see that mnt_want_write() called&lt;br /&gt;
__sb_start_write() and passed it three parameters, struct super_block (sb),&lt;br /&gt;
level (SB_FREEZE_WRITE) and a Boolean called wait (true):&lt;br /&gt;
&lt;br /&gt;
 #1 [ffff88007c473cf0] __sb_start_write at ffffffff8119bdfc&lt;br /&gt;
 #2 [ffff88007c473d80] mnt_want_write at ffffffff811bcc14&lt;br /&gt;
&lt;br /&gt;
Note: &amp;quot;whatis command can be used to check the function prototype (simply&lt;br /&gt;
entering the function name or px also does the job):&lt;br /&gt;
&lt;br /&gt;
 crash&amp;gt; whatis __sb_start_write&lt;br /&gt;
 int __sb_start_write(struct super_block *, int, bool);&lt;br /&gt;
&lt;br /&gt;
Before we go any further, it is important to know how arguments are passed to&lt;br /&gt;
the called function. First argument goes to %rdi, second to %rsi, third to&lt;br /&gt;
%rdx, fourth to %rcx and fifth and sixth to %r8 and %r9 respectively. Armed&lt;br /&gt;
with this knowledge now we can turn our attention to disassembly. Let&amp;#039;s&lt;br /&gt;
disassemble mnt_start_write to find out arguments passed to __sb_start_write:&lt;br /&gt;
&lt;br /&gt;
 crash&amp;gt; dis -lr ffffffff811bcc14 &lt;br /&gt;
 /usr/src/debug/kernel-2.6.32-642.13.1.el6/linux-2.6.32-642.13.1.el6.x86_64/fs/namespace.c: 296&lt;br /&gt;
 0xffffffff811bcbf0 &amp;lt;mnt_want_write&amp;gt;:    push   %rbp&lt;br /&gt;
 0xffffffff811bcbf1 &amp;lt;mnt_want_write+1&amp;gt;:  mov    %rsp,%rbp&lt;br /&gt;
 0xffffffff811bcbf4 &amp;lt;mnt_want_write+4&amp;gt;:  push   %rbx&lt;br /&gt;
 0xffffffff811bcbf5 &amp;lt;mnt_want_write+5&amp;gt;:  sub    $0x18,%rsp&lt;br /&gt;
 0xffffffff811bcbf9 &amp;lt;mnt_want_write+9&amp;gt;:  nopl   0x0(%rax,%rax,1)&lt;br /&gt;
 /usr/src/debug/kernel-2.6.32-642.13.1.el6/linux-2.6.32-642.13.1.el6.x86_64/include/linux/fs.h: 1571&lt;br /&gt;
 0xffffffff811bcbfe &amp;lt;mnt_want_write+14&amp;gt;: mov    $0x1,%edx  &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; 3rd argument i.e. wait&lt;br /&gt;
 0xffffffff811bcc03 &amp;lt;mnt_want_write+19&amp;gt;: mov    $0x1,%esi  &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; 2nd argument i.e. SB_FREEZE_WRITE&lt;br /&gt;
 /usr/src/debug/kernel-2.6.32-642.13.1.el6/linux-2.6.32-642.13.1.el6.x86_64/fs/namespace.c: 296&lt;br /&gt;
 0xffffffff811bcc08 &amp;lt;mnt_want_write+24&amp;gt;: mov    %rdi,%rbx &lt;br /&gt;
 /usr/src/debug/kernel-2.6.32-642.13.1.el6/linux-2.6.32-642.13.1.el6.x86_64/include/linux/fs.h: 1571&lt;br /&gt;
 0xffffffff811bcc0b &amp;lt;mnt_want_write+27&amp;gt;: mov    0x28(%rdi),%rdi &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; first argument i.e. super_block (sb)&lt;br /&gt;
 0xffffffff811bcc0f &amp;lt;mnt_want_write+31&amp;gt;: callq  0xffffffff8119bd20 &amp;lt;__sb_start_write&amp;gt;&lt;br /&gt;
 /usr/src/debug/kernel-2.6.32-642.13.1.el6/linux-2.6.32-642.13.1.el6.x86_64/fs/namespace.c: 300&lt;br /&gt;
 0xffffffff811bcc14 &amp;lt;mnt_want_write+36&amp;gt;: mov    %rbx,%rdi&lt;br /&gt;
&lt;br /&gt;
The values of second and third arguments i.e. SB_FREEZE_WRITE and wait are&lt;br /&gt;
pretty straightforward, both are set to 1. &lt;br /&gt;
&lt;br /&gt;
But to determine super_block which is %rdi we have to back-peddle a little bit,&lt;br /&gt;
28th offset of %rdi was copied to %rdi:&lt;br /&gt;
&lt;br /&gt;
 mov    0x28(%rdi),%rdi&lt;br /&gt;
&lt;br /&gt;
we need to determine what&amp;#039;s inside %rdi and one line above that tells us that&lt;br /&gt;
%rdi was copied to %rbx. &lt;br /&gt;
&lt;br /&gt;
 mov    %rdi,%rbx&lt;br /&gt;
&lt;br /&gt;
If we can determine value inside %rbx, it will give us %rdi and then 28th&lt;br /&gt;
offset of %rdi can be calculated.&lt;br /&gt;
&lt;br /&gt;
To obtain %rdi let&amp;#039;s disassemble __sb_start_write and see if %rbx is saved&lt;br /&gt;
somewhere:&lt;br /&gt;
&lt;br /&gt;
 crash&amp;gt; dis -lr ffffffff8119bdfc | head&lt;br /&gt;
 /usr/src/debug/kernel-2.6.32-642.13.1.el6/linux-2.6.32-642.13.1.el6.x86_64/fs/super.c: 669&lt;br /&gt;
 0xffffffff8119bd20 &amp;lt;__sb_start_write&amp;gt;:	push   %rbp&lt;br /&gt;
 0xffffffff8119bd21 &amp;lt;__sb_start_write+1&amp;gt;:	mov    %rsp,%rbp&lt;br /&gt;
 0xffffffff8119bd24 &amp;lt;__sb_start_write+4&amp;gt;:	add    $0xffffffffffffff80,%rsp&lt;br /&gt;
 0xffffffff8119bd28 &amp;lt;__sb_start_write+8&amp;gt;:	mov    %rbx,-0x28(%rbp)   &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; rbx&lt;br /&gt;
 0xffffffff8119bd2c &amp;lt;__sb_start_write+12&amp;gt;:	mov    %r12,-0x20(%rbp)&lt;br /&gt;
 0xffffffff8119bd30 &amp;lt;__sb_start_write+16&amp;gt;:	mov    %r13,-0x18(%rbp)&lt;br /&gt;
 0xffffffff8119bd34 &amp;lt;__sb_start_write+20&amp;gt;:	mov    %r14,-0x10(%rbp)&lt;br /&gt;
 0xffffffff8119bd38 &amp;lt;__sb_start_write+24&amp;gt;:	mov    %r15,-0x8(%rbp)&lt;br /&gt;
 0xffffffff8119bd3c &amp;lt;__sb_start_write+28&amp;gt;:	nopl   0x0(%rax,%rax,1)&lt;br /&gt;
&lt;br /&gt;
%rbx is copied to -28th offset of %rbp, and %rbp can be found either in the&lt;br /&gt;
stack data of __sb_start_write or schedule, I am going to use stack data of&lt;br /&gt;
schedule for now to make it simpler. Disassembly of schedule (next function&lt;br /&gt;
after __sb_start_write) suggests that %rbp is pushed to the stack:&lt;br /&gt;
&lt;br /&gt;
 crash&amp;gt; dis -lr ffffffff815489d0 | head&lt;br /&gt;
 /usr/src/debug/kernel-2.6.32-642.13.1.el6/linux-2.6.32-642.13.1.el6.x86_64/kernel/sched.c: 6133&lt;br /&gt;
 0xffffffff81548630 &amp;lt;schedule&amp;gt;:	push   %rbp  &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; 1st push&lt;br /&gt;
 0xffffffff81548631 &amp;lt;schedule+1&amp;gt;:	mov    %rsp,%rbp&lt;br /&gt;
 0xffffffff81548634 &amp;lt;schedule+4&amp;gt;:	push   %r15&lt;br /&gt;
 0xffffffff81548636 &amp;lt;schedule+6&amp;gt;:	push   %r14&lt;br /&gt;
 0xffffffff81548638 &amp;lt;schedule+8&amp;gt;:	push   %r13&lt;br /&gt;
 0xffffffff8154863a &amp;lt;schedule+10&amp;gt;:	push   %r12&lt;br /&gt;
 0xffffffff8154863c &amp;lt;schedule+12&amp;gt;:	push   %rbx&lt;br /&gt;
 0xffffffff8154863d &amp;lt;schedule+13&amp;gt;:	sub    $0x98,%rsp&lt;br /&gt;
 0xffffffff81548644 &amp;lt;schedule+20&amp;gt;:	nopl   0x0(%rax,%rax,1)&lt;br /&gt;
&lt;br /&gt;
first push at stack will give us %rbp, and bt -f can be used to print stack:&lt;br /&gt;
&lt;br /&gt;
 crash&amp;gt; bt -f | grep -A15 schedule&lt;br /&gt;
  #0 [ffff88007c473c18] schedule at ffffffff815489d0&lt;br /&gt;
     ffff88007c473c20: 0000000000000082 0000000000000000 &lt;br /&gt;
     ffff88007c473c30: 0000000000000000 0000000000000000 &lt;br /&gt;
     ffff88007c473c40: 0000000000000000 0000000000000000 &lt;br /&gt;
     ffff88007c473c50: 0000000000000000 0000000000000000 &lt;br /&gt;
     ffff88007c473c60: 0000000000000000 ffff880037b71068 &lt;br /&gt;
     ffff88007c473c70: ffff88007c473fd8 0000000000010068 &lt;br /&gt;
     ffff88007c473c80: ffff880037b71068 ffff88007e527520 &lt;br /&gt;
     ffff88007c473c90: ffff880037b70ab0 0000000000000002 &lt;br /&gt;
     ffff88007c473ca0: 0000000000000246 ffff88007c473ce8 &lt;br /&gt;
     ffff88007c473cb0: ffffffff810a6bce ffff880037b70ab0 &lt;br /&gt;
     ffff88007c473cc0: ffff8800379e7400 0000000000000001 &lt;br /&gt;
     ffff88007c473cd0: ffff88007c473d18 ffff8800379e76d8 &lt;br /&gt;
     ffff88007c473ce0: ffff8800379e7770 ffff88007c473d78 &amp;lt;&amp;lt;&amp;lt;&amp;lt; ffff88007c473d78 is first push == %rbp&lt;br /&gt;
     ffff88007c473cf0: ffffffff8119bdfc &lt;br /&gt;
&lt;br /&gt;
Now that we have %rbp, %rbx can be calculated i.e. -0x28th offset of %rbp:&lt;br /&gt;
&lt;br /&gt;
 crash&amp;gt; eval (0xffff88007c473d78 - 0x28)&lt;br /&gt;
 hexadecimal: ffff88007c473d50  &lt;br /&gt;
     decimal: 18446612134399262032  (-131939310289584)&lt;br /&gt;
       octal: 1777774200017421636520&lt;br /&gt;
      binary: 1111111111111111100010000000000001111100010001110011110101010000&lt;br /&gt;
 crash&amp;gt; rd ffff88007c473d50&lt;br /&gt;
 ffff88007c473d50:  ffff88007ef64380                    .C.~....&lt;br /&gt;
&lt;br /&gt;
 %rbx == ffff88007ef64380&lt;br /&gt;
&lt;br /&gt;
Since %rdi was copied to %rbx, %rdi also is ffff88007ef64380, now if we&lt;br /&gt;
calculate 28th offset to %rdi we will get super_block:&lt;br /&gt;
&lt;br /&gt;
 crash&amp;gt; eval (0xffff88007ef64380 + 0x28)&lt;br /&gt;
 hexadecimal: ffff88007ef643a8  &lt;br /&gt;
     decimal: 18446612134444286888  (-131939265264728)&lt;br /&gt;
       octal: 1777774200017675441650&lt;br /&gt;
      binary: 1111111111111111100010000000000001111110111101100100001110101000&lt;br /&gt;
 crash&amp;gt; rd ffff88007ef643a8&lt;br /&gt;
 ffff88007ef643a8:  ffff8800379e7400                    .t.7....&lt;br /&gt;
&lt;br /&gt;
 super_block == ffff8800379e7400.&lt;br /&gt;
&lt;br /&gt;
super_block can be passed to the &amp;quot;mount&amp;quot; command to get the mount point:&lt;br /&gt;
&lt;br /&gt;
 crash&amp;gt; mount ffff8800379e7400&lt;br /&gt;
     VFSMOUNT         SUPERBLK     TYPE   DEVNAME   DIRNAME&lt;br /&gt;
 ffff88007ef64380 ffff8800379e7400 ext4   /dev/vda1 /boot   &lt;br /&gt;
&lt;br /&gt;
This tells us that that dd was trying to write to /boot. Next part of our job&lt;br /&gt;
is to find out why couldn&amp;#039;t it write to /boot. In order to answer that, let&amp;#039;s&lt;br /&gt;
take a step back and revisit the kernel code at line 677 (where dd was):&lt;br /&gt;
&lt;br /&gt;
 677         wait_event(sb-&amp;gt;s_writers.wait_unfrozen, &lt;br /&gt;
 678                sb-&amp;gt;s_writers.frozen &amp;lt; level);&lt;br /&gt;
&lt;br /&gt;
Following wait_event() definition tells us that dd was put to sleep&lt;br /&gt;
(uninterruptible) and will be woken up when &amp;quot;sb-&amp;gt;s_writers.frozen &amp;lt; level&amp;quot;&lt;br /&gt;
condition becomes true:&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * wait_event - sleep until a condition gets true&lt;br /&gt;
  * @wq: the waitqueue to wait on&lt;br /&gt;
  * @condition: a C expression for the event to wait for&lt;br /&gt;
  *&lt;br /&gt;
  * The process is put to sleep (TASK_UNINTERRUPTIBLE) until the&lt;br /&gt;
  * @condition evaluates to true. The @condition is checked each time&lt;br /&gt;
  * the waitqueue @wq is woken up.&lt;br /&gt;
  *&lt;br /&gt;
  * wake_up() has to be called after changing any variable that could&lt;br /&gt;
  * change the result of the wait condition.&lt;br /&gt;
  */&lt;br /&gt;
 #define wait_event(wq, condition)                   \&lt;br /&gt;
 do {                                    \&lt;br /&gt;
     if (condition)                          \&lt;br /&gt;
         break;                          \&lt;br /&gt;
     __wait_event(wq, condition);                    \&lt;br /&gt;
 } while (0)&lt;br /&gt;
&lt;br /&gt;
We know that &amp;quot;level&amp;quot; is 1 (second argument SB_FREEZE_WRITE), and&lt;br /&gt;
sb-&amp;gt;s_writers.frozen needs to be less than 1 for this condition to become true.&lt;br /&gt;
Let&amp;#039;s see what exactly is the current value of sb-&amp;gt;s_writers.frozen, since we&lt;br /&gt;
already have sb, it is pretty straightforward to obtain this value:&lt;br /&gt;
&lt;br /&gt;
 crash&amp;gt; pd ((struct super_block *)0xffff8800379e7400)-&amp;gt;s_writers.frozen&lt;br /&gt;
 $5 = 4&lt;br /&gt;
&lt;br /&gt;
Or do this (I prefer the 1st one):&lt;br /&gt;
&lt;br /&gt;
 crash&amp;gt; super_block.s_writers ffff8800379e7400 | grep frozen&lt;br /&gt;
     frozen = 4, &lt;br /&gt;
&lt;br /&gt;
sb-&amp;gt;s_writers.frozen is 4 which obviously is lower than 1 and this is why dd is&lt;br /&gt;
uninterruptible, but what does this value 4 mean? This is defined in&lt;br /&gt;
include/linux/fs.h (&amp;quot;cscope&amp;quot; can be used to examine kernel source):&lt;br /&gt;
&lt;br /&gt;
 /* Possible states of &amp;#039;frozen&amp;#039; field */&lt;br /&gt;
 enum {&lt;br /&gt;
     SB_UNFROZEN = 0,        /* FS is unfrozen */&lt;br /&gt;
     SB_FREEZE_WRITE = 1,        /* Writes, dir ops, ioctls frozen */&lt;br /&gt;
     SB_FREEZE_TRANS = 2,&lt;br /&gt;
     SB_FREEZE_PAGEFAULT = 2,    /* Page faults stopped as well */&lt;br /&gt;
     SB_FREEZE_FS = 3,       /* For internal FS use (e.g. to stop&lt;br /&gt;
                      * internal threads if needed) */&lt;br /&gt;
     SB_FREEZE_COMPLETE = 4,     /* -&amp;gt;freeze_fs finished successfully */  &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
4 is SB_FREEZE_COMPLETE, which means that filesystem i.e. /boot is frozen. So,&lt;br /&gt;
now we can say that dd became uninterruptible because /boot filesystem was&lt;br /&gt;
frozen, this triggered hung_task_timeout_secs which was caught by&lt;br /&gt;
hung_task_panic and this caused the crash. &lt;br /&gt;
&lt;br /&gt;
Next step should be to check what exactly froze the filesystem, in this&lt;br /&gt;
particular case I did it using fsfreeze to collect this vmcore so I can&lt;br /&gt;
demonstrate a few things about vmcore analysis. &lt;br /&gt;
&lt;br /&gt;
In order to collect this demo vmcore I used a sysctl parameter named&lt;br /&gt;
hung_task_panic. This parameter when enabled will trigger a crash if a process&lt;br /&gt;
becomes uninterruptible for more than 120 seconds. hung_task_timeout_secs&lt;br /&gt;
sysctl parameter controls this duration and is set to 120 seconds by default in&lt;br /&gt;
RHEL 6/7. After enabling hung_task_panic and reducing hung_task_timeout_secs to&lt;br /&gt;
10 seconds:&lt;br /&gt;
&lt;br /&gt;
 # echo 1 &amp;gt; /proc/sys/kernel/hung_task_panic&lt;br /&gt;
 # echo 10 &amp;gt; /proc/sys/kernel/hung_task_timeout_secs&lt;br /&gt;
&lt;br /&gt;
I simply executed following dd command on /boot:&lt;br /&gt;
&lt;br /&gt;
 # dd if=/dev/zero of=/boot/test&lt;br /&gt;
&lt;br /&gt;
And in the second terminal this:&lt;br /&gt;
&lt;br /&gt;
 # fsfreeze -f /boot&lt;br /&gt;
&lt;br /&gt;
This made dd uninterruptible, hung_task_panic kicked in and kdump did its job&lt;br /&gt;
by saving a vmcore under /var/crash.&lt;br /&gt;
&lt;br /&gt;
We can print these values from vmcore:&lt;br /&gt;
&lt;br /&gt;
 crash&amp;gt; p sysctl_hung_task_timeout_secs&lt;br /&gt;
 sysctl_hung_task_timeout_secs = $1 = 10&lt;br /&gt;
&lt;br /&gt;
 crash&amp;gt; p sysctl_hung_task_panic&lt;br /&gt;
 sysctl_hung_task_panic = $2 = 1&lt;br /&gt;
&lt;br /&gt;
Please send an email to the [http://lists.reserved-bit.com/listinfo.cgi/kernel-meetup-reserved-bit.com kernel meetup list] for any queries and if this&lt;br /&gt;
write-up needs any corrections.&lt;/div&gt;</summary>
		<author><name>Nisha</name></author>	</entry>

	<entry>
		<id>https://ideas.reserved-bit.com/index.php?title=Template:Documentation&amp;diff=58</id>
		<title>Template:Documentation</title>
		<link rel="alternate" type="text/html" href="https://ideas.reserved-bit.com/index.php?title=Template:Documentation&amp;diff=58"/>
				<updated>2017-05-17T10:00:30Z</updated>
		
		<summary type="html">&lt;p&gt;Nisha: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nisha</name></author>	</entry>

	<entry>
		<id>https://ideas.reserved-bit.com/index.php?title=Template:Mbox&amp;diff=60</id>
		<title>Template:Mbox</title>
		<link rel="alternate" type="text/html" href="https://ideas.reserved-bit.com/index.php?title=Template:Mbox&amp;diff=60"/>
				<updated>2017-05-17T10:00:30Z</updated>
		
		<summary type="html">&lt;p&gt;Nisha: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:Message box|mbox}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nisha</name></author>	</entry>

	<entry>
		<id>https://ideas.reserved-bit.com/index.php?title=Template:Ambox&amp;diff=56</id>
		<title>Template:Ambox</title>
		<link rel="alternate" type="text/html" href="https://ideas.reserved-bit.com/index.php?title=Template:Ambox&amp;diff=56"/>
				<updated>2017-05-17T10:00:29Z</updated>
		
		<summary type="html">&lt;p&gt;Nisha: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:Message box|ambox}}&amp;lt;noinclude&amp;gt;	&lt;br /&gt;
{{ {{TNTN|documentation}} }}	&lt;br /&gt;
[[Category:Mbox templates{{translation}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nisha</name></author>	</entry>

	<entry>
		<id>https://ideas.reserved-bit.com/index.php?title=Template:Notice&amp;diff=54</id>
		<title>Template:Notice</title>
		<link rel="alternate" type="text/html" href="https://ideas.reserved-bit.com/index.php?title=Template:Notice&amp;diff=54"/>
				<updated>2017-05-17T09:59:27Z</updated>
		
		<summary type="html">&lt;p&gt;Nisha: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ambox&lt;br /&gt;
| name = Notice&lt;br /&gt;
| subst = &amp;lt;includeonly&amp;gt;{{subst:&amp;lt;/includeonly&amp;gt;&amp;lt;includeonly&amp;gt;substcheck}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
| demospace = {{{demospace|}}}&lt;br /&gt;
| image = {{#if:{{{image|}}}| [[Image:{{{image}}}|40px|Notice]] }}&lt;br /&gt;
| text = &lt;br /&gt;
  {{#if:{{{header|}}}&lt;br /&gt;
  | &amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;{{{header}}}&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt; &lt;br /&gt;
  }}{{{1|{{{text}}}}}}&lt;br /&gt;
| small = {{{small|}}}&lt;br /&gt;
| smallimage = {{#if:{{{image|}}}| [[File:{{{image}}}|30px|Notice]] }}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories and interwikis to the /doc subpage, not here! --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nisha</name></author>	</entry>

	<entry>
		<id>https://ideas.reserved-bit.com/index.php?title=Kernel_Meetup_Topic_Proposals_-_2017&amp;diff=25</id>
		<title>Kernel Meetup Topic Proposals - 2017</title>
		<link rel="alternate" type="text/html" href="https://ideas.reserved-bit.com/index.php?title=Kernel_Meetup_Topic_Proposals_-_2017&amp;diff=25"/>
				<updated>2017-03-01T07:14:35Z</updated>
		
		<summary type="html">&lt;p&gt;Nisha: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can propose up to three topics to discuss during each meetup.  If you want to have more than that, please discuss on the [http://lists.reserved-bit.com/listinfo.cgi/kernel-meetup-reserved-bit.com meetup mailing list] to gain consensus.&lt;br /&gt;
&lt;br /&gt;
=== Wish List ===&lt;br /&gt;
&lt;br /&gt;
These are topics you would like to have covered but don&amp;#039;t have the expertise to cover at the moment.&lt;br /&gt;
&lt;br /&gt;
* Add toy page allocator instead of using buddy allocator&lt;br /&gt;
* Code walkthrough MMU&lt;br /&gt;
* B-tree &lt;br /&gt;
&lt;br /&gt;
=== [[Kernel Meetup March - 2017|March 2017]] ===&lt;br /&gt;
&lt;br /&gt;
* Kernel crash dump analysis: Nitin Bansal&lt;br /&gt;
* Basics of the ext file system: Jitendra Khasdev&lt;br /&gt;
&lt;br /&gt;
=== Apr 2017 ===&lt;br /&gt;
&lt;br /&gt;
=== May 2017 ===&lt;br /&gt;
&lt;br /&gt;
=== Jun 2017 ===&lt;br /&gt;
&lt;br /&gt;
[[Category:KernelMeetup]]&lt;/div&gt;</summary>
		<author><name>Nisha</name></author>	</entry>

	<entry>
		<id>https://ideas.reserved-bit.com/index.php?title=Main_Page&amp;diff=24</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://ideas.reserved-bit.com/index.php?title=Main_Page&amp;diff=24"/>
				<updated>2017-03-01T07:13:33Z</updated>
		
		<summary type="html">&lt;p&gt;Nisha: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the reserved-bit Ideas wiki. If you&amp;#039;re a member of the reserved-bit makerspace, feel free to use this space to catalogue your ideas. This will help other members find them and collaborate with you. You can edit the wiki even if you&amp;#039;re not a member, but hey, you should come meet us and join us so that you can take that additional step forward to making your ideas into reality :)&lt;br /&gt;
&lt;br /&gt;
== Content and Links ==&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Makerspace Projects|Projects at reserved-bit]]&lt;br /&gt;
* [[Meetups|Meetups at reserved-bit]]&lt;br /&gt;
* [https://reserved-bit.com/membership reserved-bit Makerspace Membership Plans]&lt;br /&gt;
&lt;br /&gt;
== Getting started on MediaWiki ==&lt;br /&gt;
&lt;br /&gt;
Consult the [//meta.wikimedia.org/wiki/Help:Contents User&amp;#039;s Guide] for information on using the wiki software.&lt;/div&gt;</summary>
		<author><name>Nisha</name></author>	</entry>

	<entry>
		<id>https://ideas.reserved-bit.com/index.php?title=Main_Page&amp;diff=23</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://ideas.reserved-bit.com/index.php?title=Main_Page&amp;diff=23"/>
				<updated>2017-03-01T07:11:12Z</updated>
		
		<summary type="html">&lt;p&gt;Nisha: /* Content and Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the reserved-bit Ideas wiki. If you&amp;#039;re a member of the reserved-bit makerspace, feel free to use this space to catalogue your ideas. This will help other members find them and collaborate with you. You can edit the wiki even if you&amp;#039;re not a member, but hey, you should come meet us and join us so that you can take that additional step forward to making your ideas into reality :)&lt;br /&gt;
&lt;br /&gt;
=== Content and Links ===&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Makerspace Projects|Projects at reserved-bit]]&lt;br /&gt;
* [[Meetups|Meetups at reserved-bit]]&lt;br /&gt;
* [https://reserved-bit.com/membership reserved-bit Makerspace Membership Plans]&lt;br /&gt;
&lt;br /&gt;
== Getting started on MediaWiki ==&lt;br /&gt;
Consult the [//meta.wikimedia.org/wiki/Help:Contents User&amp;#039;s Guide] for information on using the wiki software.&lt;br /&gt;
* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;/div&gt;</summary>
		<author><name>Nisha</name></author>	</entry>

	<entry>
		<id>https://ideas.reserved-bit.com/index.php?title=Category:Makerspace_Projects&amp;diff=22</id>
		<title>Category:Makerspace Projects</title>
		<link rel="alternate" type="text/html" href="https://ideas.reserved-bit.com/index.php?title=Category:Makerspace_Projects&amp;diff=22"/>
				<updated>2017-03-01T07:10:12Z</updated>
		
		<summary type="html">&lt;p&gt;Nisha: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This category has pages that describes projects being worked on at reserved-bit. If you have a project page that does not appear here then make sure that you have added:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[[Category:Makerspace Projects]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
somewhere in your page.&lt;/div&gt;</summary>
		<author><name>Nisha</name></author>	</entry>

	<entry>
		<id>https://ideas.reserved-bit.com/index.php?title=Category:Makerspace_Projects&amp;diff=21</id>
		<title>Category:Makerspace Projects</title>
		<link rel="alternate" type="text/html" href="https://ideas.reserved-bit.com/index.php?title=Category:Makerspace_Projects&amp;diff=21"/>
				<updated>2017-03-01T07:09:32Z</updated>
		
		<summary type="html">&lt;p&gt;Nisha: Created page with &amp;quot;This category has pages that describes projects being worked on at reserved-bit. If you have a project page that does not appear here then make sure that you have added:  &amp;lt;now...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This category has pages that describes projects being worked on at reserved-bit. If you have a project page that does not appear here then make sure that you have added:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[[Category:Makerspace Projects]]&amp;lt;/nowiki&amp;gt; somewhere in your page.&lt;/div&gt;</summary>
		<author><name>Nisha</name></author>	</entry>

	<entry>
		<id>https://ideas.reserved-bit.com/index.php?title=Meetups&amp;diff=17</id>
		<title>Meetups</title>
		<link rel="alternate" type="text/html" href="https://ideas.reserved-bit.com/index.php?title=Meetups&amp;diff=17"/>
				<updated>2017-03-01T06:52:14Z</updated>
		
		<summary type="html">&lt;p&gt;Nisha: Protected &amp;quot;Meetups&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;reserved-bit is happy to host meetups around Open Source Software at the makerspace, especially if you intend to focus on technical knowledge sharing and contribution. If you are looking for a place to host your meetup, feel free to [https://reserved-bit.com/#contact get in touch] with us.&lt;br /&gt;
&lt;br /&gt;
=== Meetups hosted at reserved-bit ===&lt;br /&gt;
&lt;br /&gt;
* [[:Category:KernelMeetup|Kernel Meetup Pune]]&lt;/div&gt;</summary>
		<author><name>Nisha</name></author>	</entry>

	<entry>
		<id>https://ideas.reserved-bit.com/index.php?title=Main_Page&amp;diff=16</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://ideas.reserved-bit.com/index.php?title=Main_Page&amp;diff=16"/>
				<updated>2017-03-01T06:51:36Z</updated>
		
		<summary type="html">&lt;p&gt;Nisha: Protected &amp;quot;Main Page&amp;quot;: High traffic page ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) [cascading]&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the reserved-bit Ideas wiki. If you&amp;#039;re a member of the reserved-bit makerspace, feel free to use this space to catalogue your ideas. This will help other members find them and collaborate with you. You can edit the wiki even if you&amp;#039;re not a member, but hey, you should come meet us and join us so that you can take that additional step forward to making your ideas into reality :)&lt;br /&gt;
&lt;br /&gt;
=== Content and Links ===&lt;br /&gt;
&lt;br /&gt;
* [[Meetups|Meetups at reserved-bit]]&lt;br /&gt;
* [https://reserved-bit.com/membership reserved-bit Makerspace Membership Plans]&lt;br /&gt;
&lt;br /&gt;
== Getting started on MediaWiki ==&lt;br /&gt;
Consult the [//meta.wikimedia.org/wiki/Help:Contents User&amp;#039;s Guide] for information on using the wiki software.&lt;br /&gt;
* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;/div&gt;</summary>
		<author><name>Nisha</name></author>	</entry>

	<entry>
		<id>https://ideas.reserved-bit.com/index.php?title=Main_Page&amp;diff=15</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://ideas.reserved-bit.com/index.php?title=Main_Page&amp;diff=15"/>
				<updated>2017-03-01T06:46:05Z</updated>
		
		<summary type="html">&lt;p&gt;Nisha: /* Content and Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the reserved-bit Ideas wiki. If you&amp;#039;re a member of the reserved-bit makerspace, feel free to use this space to catalogue your ideas. This will help other members find them and collaborate with you. You can edit the wiki even if you&amp;#039;re not a member, but hey, you should come meet us and join us so that you can take that additional step forward to making your ideas into reality :)&lt;br /&gt;
&lt;br /&gt;
=== Content and Links ===&lt;br /&gt;
&lt;br /&gt;
* [[Meetups|Meetups at reserved-bit]]&lt;br /&gt;
* [https://reserved-bit.com/membership reserved-bit Makerspace Membership Plans]&lt;br /&gt;
&lt;br /&gt;
== Getting started on MediaWiki ==&lt;br /&gt;
Consult the [//meta.wikimedia.org/wiki/Help:Contents User&amp;#039;s Guide] for information on using the wiki software.&lt;br /&gt;
* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;/div&gt;</summary>
		<author><name>Nisha</name></author>	</entry>

	<entry>
		<id>https://ideas.reserved-bit.com/index.php?title=Main_Page&amp;diff=14</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://ideas.reserved-bit.com/index.php?title=Main_Page&amp;diff=14"/>
				<updated>2017-03-01T06:45:20Z</updated>
		
		<summary type="html">&lt;p&gt;Nisha: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the reserved-bit Ideas wiki. If you&amp;#039;re a member of the reserved-bit makerspace, feel free to use this space to catalogue your ideas. This will help other members find them and collaborate with you. You can edit the wiki even if you&amp;#039;re not a member, but hey, you should come meet us and join us so that you can take that additional step forward to making your ideas into reality :)&lt;br /&gt;
&lt;br /&gt;
=== Content and Links ===&lt;br /&gt;
&lt;br /&gt;
* [[Meetups|Meetups at reserved-bit]]&lt;br /&gt;
* [https://reserved-bit.com/membership reserved-bit Makerspace Membership Plans]]&lt;br /&gt;
&lt;br /&gt;
== Getting started on MediaWiki ==&lt;br /&gt;
Consult the [//meta.wikimedia.org/wiki/Help:Contents User&amp;#039;s Guide] for information on using the wiki software.&lt;br /&gt;
* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;/div&gt;</summary>
		<author><name>Nisha</name></author>	</entry>

	<entry>
		<id>https://ideas.reserved-bit.com/index.php?title=Meetups&amp;diff=13</id>
		<title>Meetups</title>
		<link rel="alternate" type="text/html" href="https://ideas.reserved-bit.com/index.php?title=Meetups&amp;diff=13"/>
				<updated>2017-03-01T06:43:08Z</updated>
		
		<summary type="html">&lt;p&gt;Nisha: Created page with &amp;quot;reserved-bit is happy to host meetups around Open Source Software at the makerspace, especially if you intend to focus on technical knowledge sharing and contribution. If you...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;reserved-bit is happy to host meetups around Open Source Software at the makerspace, especially if you intend to focus on technical knowledge sharing and contribution. If you are looking for a place to host your meetup, feel free to [https://reserved-bit.com/#contact get in touch] with us.&lt;br /&gt;
&lt;br /&gt;
=== Meetups hosted at reserved-bit ===&lt;br /&gt;
&lt;br /&gt;
* [[:Category:KernelMeetup|Kernel Meetup Pune]]&lt;/div&gt;</summary>
		<author><name>Nisha</name></author>	</entry>

	<entry>
		<id>https://ideas.reserved-bit.com/index.php?title=Kernel_Meetup_March_-_2017&amp;diff=12</id>
		<title>Kernel Meetup March - 2017</title>
		<link rel="alternate" type="text/html" href="https://ideas.reserved-bit.com/index.php?title=Kernel_Meetup_March_-_2017&amp;diff=12"/>
				<updated>2017-03-01T06:37:08Z</updated>
		
		<summary type="html">&lt;p&gt;Nisha: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Event details ===&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Date and Time&amp;#039;&amp;#039;&amp;#039;: TBD&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Venue&amp;#039;&amp;#039;&amp;#039;: TBD (Default: [https://reserved-bit.com reserved-bit])&lt;br /&gt;
&lt;br /&gt;
=== Agenda ===&lt;br /&gt;
&lt;br /&gt;
* Kernel crash dump analysis: Nitin Bansal&lt;br /&gt;
* Basics of the ext file system: Jitendra Khasdev&lt;br /&gt;
&lt;br /&gt;
=== Blog Posts ===&lt;br /&gt;
&lt;br /&gt;
If you have written about this meetup then please add a link to your blog entry here.&lt;br /&gt;
&lt;br /&gt;
[[Category:KernelMeetup]]&lt;/div&gt;</summary>
		<author><name>Nisha</name></author>	</entry>

	<entry>
		<id>https://ideas.reserved-bit.com/index.php?title=Kernel_Meetup_March_-_2017&amp;diff=11</id>
		<title>Kernel Meetup March - 2017</title>
		<link rel="alternate" type="text/html" href="https://ideas.reserved-bit.com/index.php?title=Kernel_Meetup_March_-_2017&amp;diff=11"/>
				<updated>2017-03-01T06:25:51Z</updated>
		
		<summary type="html">&lt;p&gt;Nisha: /* New meetup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Event details ===&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Date and Time&amp;#039;&amp;#039;&amp;#039;: TBD&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Venue&amp;#039;&amp;#039;&amp;#039;: TBD (Default: [https://reserved-bit.com reserved-bit])&lt;br /&gt;
&lt;br /&gt;
=== Agenda ===&lt;br /&gt;
&lt;br /&gt;
* Kernel crash dump analysis: Nitin Bansal&lt;br /&gt;
* Basics of the ext file system: Jitendra Khasdev&lt;br /&gt;
&lt;br /&gt;
=== Blog Posts ===&lt;br /&gt;
&lt;br /&gt;
If you have written about this meetup then please add a link to your blog entry here.&lt;/div&gt;</summary>
		<author><name>Nisha</name></author>	</entry>

	<entry>
		<id>https://ideas.reserved-bit.com/index.php?title=Kernel_Meetup_Topic_Proposals_-_2017&amp;diff=6</id>
		<title>Kernel Meetup Topic Proposals - 2017</title>
		<link rel="alternate" type="text/html" href="https://ideas.reserved-bit.com/index.php?title=Kernel_Meetup_Topic_Proposals_-_2017&amp;diff=6"/>
				<updated>2017-02-28T07:20:59Z</updated>
		
		<summary type="html">&lt;p&gt;Nisha: /* New page */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can propose up to three topics to discuss during each meetup.  If you want to have more than that, please discuss on the meetup mailing list to gain consensus.&lt;br /&gt;
&lt;br /&gt;
=== Mar 2017 ===&lt;br /&gt;
&lt;br /&gt;
* Kernel crash dump analysis: Nitin Bansal&lt;br /&gt;
* Basics of the ext file system: Jitendra Khasdev&lt;br /&gt;
&lt;br /&gt;
=== Apr 2017 ===&lt;br /&gt;
&lt;br /&gt;
=== May 2017 ===&lt;br /&gt;
&lt;br /&gt;
=== Jun 2017 ===&lt;br /&gt;
&lt;br /&gt;
[[Category:KernelMeetup]]&lt;/div&gt;</summary>
		<author><name>Nisha</name></author>	</entry>

	<entry>
		<id>https://ideas.reserved-bit.com/index.php?title=Category:KernelMeetup&amp;diff=5</id>
		<title>Category:KernelMeetup</title>
		<link rel="alternate" type="text/html" href="https://ideas.reserved-bit.com/index.php?title=Category:KernelMeetup&amp;diff=5"/>
				<updated>2017-02-28T07:15:12Z</updated>
		
		<summary type="html">&lt;p&gt;Nisha: /* Add Kernel Meetup category */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Kernel Meetup for Pune Linux kernel enthusiasts and contributors happens every month tentatively on the last weekend of the month.  Content related to the Kernel meetup should go into this category.&lt;/div&gt;</summary>
		<author><name>Nisha</name></author>	</entry>

	<entry>
		<id>https://ideas.reserved-bit.com/index.php?title=User_talk:Nisha&amp;diff=4</id>
		<title>User talk:Nisha</title>
		<link rel="alternate" type="text/html" href="https://ideas.reserved-bit.com/index.php?title=User_talk:Nisha&amp;diff=4"/>
				<updated>2017-02-28T07:03:25Z</updated>
		
		<summary type="html">&lt;p&gt;Nisha: /* List of meet-ups */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== List of meet-ups ==&lt;br /&gt;
&lt;br /&gt;
Meetup on Cython &amp;lt;br/&amp;gt;&lt;br /&gt;
Meetup on DevOps&lt;/div&gt;</summary>
		<author><name>Nisha</name></author>	</entry>

	<entry>
		<id>https://ideas.reserved-bit.com/index.php?title=Main_Page&amp;diff=3</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://ideas.reserved-bit.com/index.php?title=Main_Page&amp;diff=3"/>
				<updated>2017-02-28T07:02:13Z</updated>
		
		<summary type="html">&lt;p&gt;Nisha: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Consult the [//meta.wikimedia.org/wiki/Help:Contents User&amp;#039;s Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;/div&gt;</summary>
		<author><name>Nisha</name></author>	</entry>

	<entry>
		<id>https://ideas.reserved-bit.com/index.php?title=Main_Page&amp;diff=2</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://ideas.reserved-bit.com/index.php?title=Main_Page&amp;diff=2"/>
				<updated>2017-02-28T06:38:20Z</updated>
		
		<summary type="html">&lt;p&gt;Nisha: Added 2 meetup ideas&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Meetup on Cython &amp;lt;br/&amp;gt;&lt;br /&gt;
Meetup on DevOps&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Consult the [//meta.wikimedia.org/wiki/Help:Contents User&amp;#039;s Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;/div&gt;</summary>
		<author><name>Nisha</name></author>	</entry>

	</feed>