<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/ocfs2/cluster, branch linux-4.0.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.0.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.0.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2015-02-10T22:30:29Z</updated>
<entry>
<title>ocfs2: o2net: silence uninitialized variable warning</title>
<updated>2015-02-10T22:30:29Z</updated>
<author>
<name>Dan Carpenter</name>
</author>
<published>2015-02-10T22:09:10Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e6d9f86d6b80dec23fd0e90bab114e642dac483e'/>
<id>urn:sha1:e6d9f86d6b80dec23fd0e90bab114e642dac483e</id>
<content type='text'>
Smatch complains that, if o2net_tx_can_proceed() returns false, then "sc"
and "ret" are uninialized or maybe we are re-using the data from previous
iteration.  I do not know if we can hit this bug in real life but checking
the return value is harmless and we may as well silence the static checker
warning.

Signed-off-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Cc: Mark Fasheh &lt;mfasheh@suse.com&gt;
Cc: Joel Becker &lt;jlbec@evilplan.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>ocfs2: fix wrong comment</title>
<updated>2015-02-10T22:30:28Z</updated>
<author>
<name>Junxiao Bi</name>
</author>
<published>2015-02-10T22:08:48Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=41d6247fdd1a30d4145c9c2590db3928ddc3d323'/>
<id>urn:sha1:41d6247fdd1a30d4145c9c2590db3928ddc3d323</id>
<content type='text'>
O2NET_CONN_IDLE_DELAY is not defined, connection attempts will not be
canceled due to timeout.

Signed-off-by: Junxiao Bi &lt;junxiao.bi@oracle.com&gt;
Cc: Mark Fasheh &lt;mfasheh@suse.com&gt;
Cc: Joel Becker &lt;jlbec@evilplan.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>ocfs2: o2net: fix connect expired</title>
<updated>2014-12-11T01:41:03Z</updated>
<author>
<name>Junxiao Bi</name>
</author>
<published>2014-12-10T23:41:51Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=196fe71d643be8285749726e88c1508536fe03b8'/>
<id>urn:sha1:196fe71d643be8285749726e88c1508536fe03b8</id>
<content type='text'>
Set nn_persistent_error to -ENOTCONN will stop reconnect since the
"stop" condition in o2net_start_connect() will be true.

    stop = (nn-&gt;nn_sc ||
                (nn-&gt;nn_persistent_error &amp;&amp;
                (nn-&gt;nn_persistent_error != -ENOTCONN || timeout == 0)));

This will make connection never be established if the first connection
request is lost.

Set nn_persistent_error to 0 when connect expired to fix this.  With
this changes, dlm will not be waken up when connect expired, this is OK
since dlm depends on network, dlm can do nothing in this case if waken
up.  Let it wait there for network recover and connect built again to
continue.

Signed-off-by: Junxiao Bi &lt;junxiao.bi@oracle.com&gt;
Reviewed-by: Srinivas Eeda &lt;srinivas.eeda@oracle.com&gt;
Cc: Joel Becker &lt;jlbec@evilplan.org&gt;
Cc: Mark Fasheh &lt;mfasheh@suse.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>ocfs2: report error from o2hb_do_disk_heartbeat() to user</title>
<updated>2014-12-11T01:41:03Z</updated>
<author>
<name>Jan Kara</name>
</author>
<published>2014-12-10T23:41:45Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f5425fcea72eec084c50f36db4d25f697227c602'/>
<id>urn:sha1:f5425fcea72eec084c50f36db4d25f697227c602</id>
<content type='text'>
Report return value of o2hb_do_disk_heartbeat() as a part of ML_HEARTBEAT
message so that we know whether a heartbeat actually happened or not.
This also makes assigned but otherwise unused 'ret' variable used.

Coverity id: 1227053.

Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
Cc: Mark Fasheh &lt;mfasheh@suse.com&gt;
Cc: Joel Becker &lt;jlbec@evilplan.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>fix breakage in o2net_send_tcp_msg()</title>
<updated>2014-11-05T20:21:18Z</updated>
<author>
<name>Al Viro</name>
</author>
<published>2014-11-05T20:18:29Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7e8631e8b9d4e9f698c09c7e7309c96249180ff9'/>
<id>urn:sha1:7e8631e8b9d4e9f698c09c7e7309c96249180ff9</id>
<content type='text'>
uninitialized msghdr.  Broken in "ocfs2: don't open-code kernel_recvmsg()"
by me ;-/

Cc: stable@vger.kernel.org # 3.15+
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>ocfs2: replace strnicmp with strncasecmp</title>
<updated>2014-10-14T00:18:24Z</updated>
<author>
<name>Rasmus Villemoes</name>
</author>
<published>2014-10-13T22:54:37Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2bd63329cbdb6c6577d5ca0095dcb3e4f590ffca'/>
<id>urn:sha1:2bd63329cbdb6c6577d5ca0095dcb3e4f590ffca</id>
<content type='text'>
The kernel used to contain two functions for length-delimited,
case-insensitive string comparison, strnicmp with correct semantics and
a slightly buggy strncasecmp.  The latter is the POSIX name, so strnicmp
was renamed to strncasecmp, and strnicmp made into a wrapper for the new
strncasecmp to avoid breaking existing users.

To allow the compat wrapper strnicmp to be removed at some point in the
future, and to avoid the extra indirection cost, do
s/strnicmp/strncasecmp/g.

Signed-off-by: Rasmus Villemoes &lt;linux@rasmusvillemoes.dk&gt;
Cc: Mark Fasheh &lt;mfasheh@suse.com&gt;
Cc: Joel Becker &lt;jlbec@evilplan.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>ocfs2: fix a deadlock while o2net_wq doing direct memory reclaim</title>
<updated>2014-10-10T02:25:58Z</updated>
<author>
<name>Xue jiufei</name>
</author>
<published>2014-10-09T22:28:26Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b246d3d11e9c04f76a4fd6aae9c61da82bba0afb'/>
<id>urn:sha1:b246d3d11e9c04f76a4fd6aae9c61da82bba0afb</id>
<content type='text'>
Fix a deadlock problem caused by direct memory reclaim in o2net_wq.  The
situation is as follows:

1) Receive a connect message from another node, node queues a
   work_struct o2net_listen_work.

2) o2net_wq processes this work and call the following functions:

o2net_wq
-&gt; o2net_accept_one
  -&gt; sock_create_lite
    -&gt; sock_alloc()
      -&gt; kmem_cache_alloc with GFP_KERNEL
        -&gt; ____cache_alloc_node
          -&gt;__alloc_pages_nodemask
            -&gt; do_try_to_free_pages
              -&gt; shrink_slab
                -&gt; evict
                  -&gt; ocfs2_evict_inode
                    -&gt; ocfs2_drop_lock
                      -&gt; dlmunlock
                        -&gt; o2net_send_message_vec

   then o2net_wq wait for the unlock reply from master.

3) tcp layer received the reply, call o2net_data_ready() and queue
   sc_rx_work, waiting o2net_wq to process this work.

4) o2net_wq is a single thread workqueue, it process the work one by
   one.  Right now it is still doing o2net_listen_work and cannot handle
   sc_rx_work.  so we deadlock.

Junxiao Bi's patch "mm: clear __GFP_FS when PF_MEMALLOC_NOIO is set"
(http://ozlabs.org/~akpm/mmots/broken-out/mm-clear-__gfp_fs-when-pf_memalloc_noio-is-set.patch)
clears __GFP_FS in memalloc_noio_flags() besides __GFP_IO.  We use
memalloc_noio_save() to set process flag PF_MEMALLOC_NOIO so that all
allocations done by this process are done as if GFP_NOIO was specified.
We are not reentering filesystem while doing memory reclaim.

Signed-off-by: joyce.xue &lt;xuejiufei@huawei.com&gt;
Cc: Junxiao Bi &lt;junxiao.bi@oracle.com&gt;
Cc: Joel Becker &lt;jlbec@evilplan.org&gt;
Cc: Mark Fasheh &lt;mfasheh@suse.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>ocfs2: fix deadlock between o2hb thread and o2net_wq</title>
<updated>2014-10-10T02:25:47Z</updated>
<author>
<name>Joseph Qi</name>
</author>
<published>2014-10-09T22:25:13Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=70e82a12dbfa3acbff41be08a36e8be4578878c9'/>
<id>urn:sha1:70e82a12dbfa3acbff41be08a36e8be4578878c9</id>
<content type='text'>
The following case may lead to o2net_wq and o2hb thread deadlock on
o2hb_callback_sem.
Currently there are 2 nodes say N1, N2 in the cluster. And N2 down, at
the same time, N3 tries to join the cluster. So N1 will handle node
down (N2) and join (N3) simultaneously.
    o2hb                               o2net_wq
    -&gt;o2hb_do_disk_heartbeat
    -&gt;o2hb_check_slot
    -&gt;o2hb_run_event_list
    -&gt;o2hb_fire_callbacks
    -&gt;down_write(&amp;o2hb_callback_sem)
    -&gt;o2net_hb_node_down_cb
    -&gt;flush_workqueue(o2net_wq)
                                       -&gt;o2net_process_message
                                       -&gt;dlm_query_join_handler
                                       -&gt;o2hb_check_node_heartbeating
                                       -&gt;o2hb_fill_node_map
                                       -&gt;down_read(&amp;o2hb_callback_sem)

No need to take o2hb_callback_sem in dlm_query_join_handler,
o2hb_live_lock is enough to protect live node map.

Signed-off-by: Joseph Qi &lt;joseph.qi@huawei.com&gt;
Cc: xMark Fasheh &lt;mfasheh@suse.com&gt;
Cc: Joel Becker &lt;jlbec@evilplan.org&gt;
Cc: jiangyiwen &lt;jiangyiwen@huawei.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>ocfs2: don't fire quorum before connection established</title>
<updated>2014-10-10T02:25:47Z</updated>
<author>
<name>Junxiao Bi</name>
</author>
<published>2014-10-09T22:25:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5046f18d5bd9ad7638b32c3b304ff39a74c064df'/>
<id>urn:sha1:5046f18d5bd9ad7638b32c3b304ff39a74c064df</id>
<content type='text'>
Firing quorum before connection established can cause unexpected node to
reboot.

Assume there are 3 nodes in the cluster, Node 1, 2, 3.  Node 2 and 3 have
wrong ip address of Node 1 in cluster.conf and global heartbeat is enabled
in the cluster.  After the heatbeats are started on these three nodes,
Node 1 will reboot due to quorum fencing.  It is similar case if Node 1's
networking is not ready when starting the global heartbeat.

The reboot is not friendly as customer is not fully ready for ocfs2 to
work.  Fix it by not allowing firing quorum before the connection is
established.  In this case, ocfs2 will wait until the wrong configuration
is fixed or networking is up to continue.  Also update the log to guide
the user where to check when connection is not built for a long time.

Signed-off-by: Junxiao Bi &lt;junxiao.bi@oracle.com&gt;
Reviewed-by: Srinivas Eeda &lt;srinivas.eeda@oracle.com&gt;
Cc: Joel Becker &lt;jlbec@evilplan.org&gt;
Cc: Mark Fasheh &lt;mfasheh@suse.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>fs/ocfs2/cluster/netdebug.c: use seq_open_private() not seq_open()</title>
<updated>2014-10-10T02:25:47Z</updated>
<author>
<name>Rob Jones</name>
</author>
<published>2014-10-09T22:25:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f32883384846e1d4aa941c60dd8adb44093359c6'/>
<id>urn:sha1:f32883384846e1d4aa941c60dd8adb44093359c6</id>
<content type='text'>
Reduce boilerplate code by using seq_open_private() instead of seq_open()

Note that the code in and using sc_common_open() has been quite
extensively changed.  Not least because there was a latent memory leak in
the code as was: if sc_common_open() failed, the previously allocated
buffer was not freed.

Signed-off-by: Rob Jones &lt;rob.jones@codethink.co.uk&gt;
Cc: Joel Becker &lt;jlbec@evilplan.org&gt;
Cc: Mark Fasheh &lt;mfasheh@suse.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
</feed>
