<div dir="ltr"><div><div><div><div>Hello Gang,<br><br></div>Thank you for the quick response, it looks like the right direction for me - similar to other file systems (not clustered) have.<br><br>I&#39;ve checked and saw that the mount forwards this parameter to the OCFS2 kernel driver and it looks the version I have in my kernel does not support the errors=continue but only panic and remount-ro.<br></div><br>You&#39;ve mentioned the &quot;latest code&quot; ... my question is:  On which kernel version it should be supported? I&#39;m currently using 3.16 on ubuntu 14.04.<br><br><br></div>Thanks,<br><br></div>Guy<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jan 20, 2016 at 4:21 AM, Gang He <span dir="ltr">&lt;<a href="mailto:ghe@suse.com" target="_blank">ghe@suse.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello guy,<br>
<br>
First, OCFS2 is a shared disk cluster file system, not a distibuted file system (like Ceph), we only share the same data/metadata copy on this shared disk, please make sure this shared disk are always integrated.<br>
Second, if file system encounters any error, the behavior is specified by mount options &quot;errors=xxx&quot;,<br>
The latest code should support &quot;errors=continue&quot; option, that means file system will not panic the OS, and just return -EIO error and let the file system continue.<br>
<br>
Thanks<br>
Gang<br>
<br>
<br>
&gt;&gt;&gt;<br>
&gt; Dear OCFS2 guys,<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; My name is Guy, and I&#39;m testing ocfs2 due to its features as a clustered<br>
&gt; filesystem that I need.<br>
&gt;<br>
&gt; As part of the stability and reliability test I’ve performed, I&#39;ve<br>
&gt; encountered an issue with ocfs2 (format + mount + remove disk...), that I<br>
&gt; wanted to make sure it is a real issue and not just a mis-configuration.<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; The main concern is that the stability of the whole system is compromised<br>
&gt; when a single disk/volumes fails. It looks like the OCFS2 is not handling<br>
&gt; the error correctly but stuck in an endless loop that interferes with the<br>
&gt; work of the server.<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; I’ve test tested two cluster configurations – (1) Corosync/Pacemaker and<br>
&gt; (2) o2cb that react similarly.<br>
&gt;<br>
&gt; Following the process and log entries:<br>
&gt;<br>
&gt;<br>
&gt; Also below additional configuration that were tested.<br>
&gt;<br>
&gt;<br>
&gt; Node 1:<br>
&gt;<br>
&gt; =======<br>
&gt;<br>
&gt; 1. service corosync start<br>
&gt;<br>
&gt; 2. service dlm start<br>
&gt;<br>
&gt; 3. mkfs.ocfs2 -v -Jblock64 -b 4096 --fs-feature-level=max-features<br>
&gt; --cluster-=pcmk --cluster-name=cluster-name -N 2 /dev/&lt;path to device&gt;<br>
&gt;<br>
&gt; 4. mount -o<br>
&gt; rw,noatime,nodiratime,data=writeback,heartbeat=none,cluster_stack=pcmk<br>
&gt; /dev/&lt;path to device&gt; /mnt/ocfs2-mountpoint<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; Node 2:<br>
&gt;<br>
&gt; =======<br>
&gt;<br>
&gt; 5. service corosync start<br>
&gt;<br>
&gt; 6. service dlm start<br>
&gt;<br>
&gt; 7. mount -o<br>
&gt; rw,noatime,nodiratime,data=writeback,heartbeat=none,cluster_stack=pcmk<br>
&gt; /dev/&lt;path to device&gt; /mnt/ocfs2-mountpoint<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; So far all is working well, including reading and writing.<br>
&gt;<br>
&gt; Next<br>
&gt;<br>
&gt; 8. I’ve physically, pull out the disk at /dev/&lt;path to device&gt; to simulate<br>
&gt; a hardware failure (that may occur…) , in real life the disk is (hardware<br>
&gt; or software) protected. Nonetheless, I’m testing a hardware failure that<br>
&gt; the one of the OCFS2 file systems in my server fails.<br>
&gt;<br>
&gt; Following  - messages observed in the system log (see below) and<br>
&gt;<br>
&gt; ==&gt;  9. kernel panic(!) ... in one of the nodes or on both, or reboot on<br>
&gt; one of the nodes or both.<br>
&gt;<br>
&gt;<br>
&gt; Is there any configuration or set of parameters that will enable the system<br>
&gt; to continue working, disabling the access to the failed disk without<br>
&gt; compromising the system stability and not cause the kernel to panic?!<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;&gt;From my point of view it looks basics – when a hardware failure occurs:<br>
&gt;<br>
&gt; 1. All remaining hardware should continue working<br>
&gt;<br>
&gt; 2. The failed disk/volume should be inaccessible – but not compromise the<br>
&gt; whole system availability (Kernel panic).<br>
&gt;<br>
&gt; 3. OCFS2 “understands” there’s a failed disk and stop trying to access it.<br>
&gt;<br>
&gt; 3. All disk commands such as mount/umount, df etc. should continue working.<br>
&gt;<br>
&gt; 4. When a new/replacement drive is connected to the system, it can be<br>
&gt; accessed.<br>
&gt;<br>
&gt; My settings:<br>
&gt;<br>
&gt; ubuntu 14.04<br>
&gt;<br>
&gt; linux:  3.16.0-46-generic<br>
&gt;<br>
&gt; mkfs.ocfs2 1.8.4 (downloaded from git)<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; Some other scenarios which also were tested:<br>
&gt;<br>
&gt; 1. Remove the max-features in the mkfs (i.e. mkfs.ocfs2 -v -Jblock64 -b<br>
&gt; 4096 --cluster-stack=pcmk --cluster-name=cluster-name -N 2 /dev/&lt;path to<br>
&gt; device&gt;)<br>
&gt;<br>
&gt; This improved in some of the cases with no kernel panic but still the<br>
&gt; stability of the system was compromised, the syslog indicates that<br>
&gt; something unrecoverable is going on (See below - Appendix A1). Furthermore,<br>
&gt; System is hanging when trying to software reboot.<br>
&gt;<br>
&gt; 2. Also tried with the o2cb stack, with similar outcomes.<br>
&gt;<br>
&gt; 3. The configuration was also tested with (1,2 and 3) Local and Global<br>
&gt; heartbeat(s) that were NOT on the simulated failed disk, but on other<br>
&gt; physical disks.<br>
&gt;<br>
&gt; 4. Also tested:<br>
&gt;<br>
&gt; Ubuntu 15.15<br>
&gt;<br>
&gt; Kernel: 4.2.0-23-generic<br>
&gt;<br>
&gt; mkfs.ocfs2 1.8.4 (git clone git://<a href="http://oss.oracle.com/git/ocfs2-tools.git" rel="noreferrer" target="_blank">oss.oracle.com/git/ocfs2-tools.git</a>)<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; ==============<br>
&gt;<br>
&gt; Appendix A1:<br>
&gt;<br>
&gt; ==============<br>
&gt;<br>
&gt; from syslog:<br>
&gt;<br>
&gt; [ 1676.608123] (ocfs2cmt,5316,14):ocfs2_commit_thread:2195 ERROR: status =<br>
&gt; -5, journal is already aborted.<br>
&gt;<br>
&gt; [ 1677.611827] (ocfs2cmt,5316,14):ocfs2_commit_cache:324 ERROR: status = -5<br>
&gt;<br>
&gt; [ 1678.616634] (ocfs2cmt,5316,15):ocfs2_commit_cache:324 ERROR: status = -5<br>
&gt;<br>
&gt; [ 1679.621419] (ocfs2cmt,5316,15):ocfs2_commit_cache:324 ERROR: status = -5<br>
&gt;<br>
&gt; [ 1680.626175] (ocfs2cmt,5316,15):ocfs2_commit_cache:324 ERROR: status = -5<br>
&gt;<br>
&gt; [ 1681.630981] (ocfs2cmt,5316,9):ocfs2_commit_cache:324 ERROR: status = -5<br>
&gt;<br>
&gt; [ 1682.107356] INFO: task kworker/u64:0:6 blocked for more than 120 seconds.<br>
&gt;<br>
&gt; [ 1682.108440]       Not tainted 3.16.0-46-generic #62~14.04.1<br>
&gt;<br>
&gt; [ 1682.109388] &quot;echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs&quot; disables<br>
&gt; this message.<br>
&gt;<br>
&gt; [ 1682.110381] kworker/u64:0   D ffff88103fcb30c0     0     6      2<br>
&gt; 0x00000000<br>
&gt;<br>
&gt; [ 1682.110401] Workqueue: fw_event0 _firmware_event_work [mpt3sas]<br>
&gt;<br>
&gt; [ 1682.110405]  ffff88102910b8a0 0000000000000046 ffff88102977b2f0<br>
&gt; 00000000000130c0<br>
&gt;<br>
&gt; [ 1682.110411]  ffff88102910bfd8 00000000000130c0 ffff88102928c750<br>
&gt; ffff88201db284b0<br>
&gt;<br>
&gt; [ 1682.110415]  ffff88201db28000 ffff881028cef000 ffff88201db28138<br>
&gt; ffff88201db28268<br>
&gt;<br>
&gt; [ 1682.110419] Call Trace:<br>
&gt;<br>
&gt; [ 1682.110427]  [&lt;ffffffff8176a8b9&gt;] schedule+0x29/0x70<br>
&gt;<br>
&gt; [ 1682.110458]  [&lt;ffffffffc08d6c11&gt;] ocfs2_clear_inode+0x3b1/0xa30 [ocfs2]<br>
&gt;<br>
&gt; [ 1682.110464]  [&lt;ffffffff810b4de0&gt;] ? prepare_to_wait_event+0x100/0x100<br>
&gt;<br>
&gt; [ 1682.110487]  [&lt;ffffffffc08d8c7e&gt;] ocfs2_evict_inode+0x6e/0x730 [ocfs2]<br>
&gt;<br>
&gt; [ 1682.110493]  [&lt;ffffffff811eee04&gt;] evict+0xb4/0x180<br>
&gt;<br>
&gt; [ 1682.110498]  [&lt;ffffffff811eef09&gt;] dispose_list+0x39/0x50<br>
&gt;<br>
&gt; [ 1682.110501]  [&lt;ffffffff811efdb4&gt;] invalidate_inodes+0x134/0x150<br>
&gt;<br>
&gt; [ 1682.110506]  [&lt;ffffffff8120a64a&gt;] __invalidate_device+0x3a/0x60<br>
&gt;<br>
&gt; [ 1682.110510]  [&lt;ffffffff81367e81&gt;] invalidate_partition+0x31/0x50<br>
&gt;<br>
&gt; [ 1682.110513]  [&lt;ffffffff81368f45&gt;] del_gendisk+0xf5/0x290<br>
&gt;<br>
&gt; [ 1682.110519]  [&lt;ffffffff815177a1&gt;] sd_remove+0x61/0xc0<br>
&gt;<br>
&gt; [ 1682.110524]  [&lt;ffffffff814baf7f&gt;] __device_release_driver+0x7f/0xf0<br>
&gt;<br>
&gt; [ 1682.110529]  [&lt;ffffffff814bb013&gt;] device_release_driver+0x23/0x30<br>
&gt;<br>
&gt; [ 1682.110534]  [&lt;ffffffff814ba918&gt;] bus_remove_device+0x108/0x180<br>
&gt;<br>
&gt; [ 1682.110538]  [&lt;ffffffff814b7169&gt;] device_del+0x129/0x1c0<br>
&gt;<br>
&gt; [ 1682.110543]  [&lt;ffffffff815123a5&gt;] __scsi_remove_device+0xd5/0xe0<br>
&gt;<br>
&gt; [ 1682.110547]  [&lt;ffffffff815123d6&gt;] scsi_remove_device+0x26/0x40<br>
&gt;<br>
&gt; [ 1682.110551]  [&lt;ffffffff81512590&gt;] scsi_remove_target+0x170/0x230<br>
&gt;<br>
&gt; [ 1682.110561]  [&lt;ffffffffc03551e5&gt;] sas_rphy_remove+0x65/0x80<br>
&gt; [scsi_transport_sas]<br>
&gt;<br>
&gt; [ 1682.110570]  [&lt;ffffffffc035707d&gt;] sas_port_delete+0x2d/0x170<br>
&gt; [scsi_transport_sas]<br>
&gt;<br>
&gt; [ 1682.110575]  [&lt;ffffffff8124a6f9&gt;] ? sysfs_remove_link+0x19/0x30<br>
&gt;<br>
&gt; [ 1682.110588]  [&lt;ffffffffc03f1599&gt;]<br>
&gt; mpt3sas_transport_port_remove+0x1c9/0x1e0 [mpt3sas]<br>
&gt;<br>
&gt; [ 1682.110598]  [&lt;ffffffffc03e60b5&gt;] _scsih_remove_device+0x55/0x80<br>
&gt; [mpt3sas]<br>
&gt;<br>
&gt; [ 1682.110610]  [&lt;ffffffffc03e6159&gt;]<br>
&gt; _scsih_device_remove_by_handle.part.21+0x79/0xa0 [mpt3sas]<br>
&gt;<br>
&gt; [ 1682.110619]  [&lt;ffffffffc03eca97&gt;] _firmware_event_work+0x1337/0x1690<br>
&gt; [mpt3sas]<br>
&gt;<br>
&gt; [ 1682.110626]  [&lt;ffffffff8101c315&gt;] ? native_sched_clock+0x35/0x90<br>
&gt;<br>
&gt; [ 1682.110630]  [&lt;ffffffff8101c379&gt;] ? sched_clock+0x9/0x10<br>
&gt;<br>
&gt; [ 1682.110636]  [&lt;ffffffff81011574&gt;] ? __switch_to+0xe4/0x580<br>
&gt;<br>
&gt; [ 1682.110640]  [&lt;ffffffff81087bc9&gt;] ? pwq_activate_delayed_work+0x39/0x80<br>
&gt;<br>
&gt; [ 1682.110644]  [&lt;ffffffff8108a302&gt;] process_one_work+0x182/0x450<br>
&gt;<br>
&gt; [ 1682.110648]  [&lt;ffffffff8108aa71&gt;] worker_thread+0x121/0x570<br>
&gt;<br>
&gt; [ 1682.110652]  [&lt;ffffffff8108a950&gt;] ? rescuer_thread+0x380/0x380<br>
&gt;<br>
&gt; [ 1682.110657]  [&lt;ffffffff81091309&gt;] kthread+0xc9/0xe0<br>
&gt;<br>
&gt; [ 1682.110662]  [&lt;ffffffff81091240&gt;] ? kthread_create_on_node+0x1c0/0x1c0<br>
&gt;<br>
&gt; [ 1682.110667]  [&lt;ffffffff8176e818&gt;] ret_from_fork+0x58/0x90<br>
&gt;<br>
&gt; [ 1682.110672]  [&lt;ffffffff81091240&gt;] ? kthread_create_on_node+0x1c0/0x1c0<br>
&gt;<br>
&gt; [ 1682.635761] (ocfs2cmt,5316,9):ocfs2_commit_cache:324 ERROR: status = -5<br>
&gt;<br>
&gt; [ 1683.640549] (ocfs2cmt,5316,9):ocfs2_commit_cache:324 ERROR: status = -5<br>
&gt;<br>
&gt; [ 1684.645336] (ocfs2cmt,5316,9):ocfs2_commit_cache:324 ERROR: status = -5<br>
&gt;<br>
&gt; [ 1685.650114] (ocfs2cmt,5316,9):ocfs2_commit_cache:324 ERROR: status = -5<br>
&gt;<br>
&gt; [ 1686.654911] (ocfs2cmt,5316,9):ocfs2_commit_cache:324 ERROR: status = -5<br>
&gt;<br>
&gt; [ 1687.659684] (ocfs2cmt,5316,9):ocfs2_commit_cache:324 ERROR: status = -5<br>
&gt;<br>
&gt; [ 1688.664466] (ocfs2cmt,5316,9):ocfs2_commit_cache:324 ERROR: status = -5<br>
&gt;<br>
&gt; [ 1689.669252] (ocfs2cmt,5316,9):ocfs2_commit_cache:324 ERROR: status = -5<br>
&gt;<br>
&gt; [ 1690.674026] (ocfs2cmt,5316,9):ocfs2_commit_cache:324 ERROR: status = -5<br>
&gt;<br>
&gt; [ 1691.678810] (ocfs2cmt,5316,9):ocfs2_commit_cache:324 ERROR: status = -5<br>
&gt;<br>
&gt; [ 1691.679920] (ocfs2cmt,5316,9):ocfs2_commit_thread:2195 ERROR: status =<br>
&gt; -5, journal is already aborted.<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; Thanks in advance,<br>
&gt;<br>
&gt; Guy<br>
</blockquote></div><br></div>