<feed xmlns='http://www.w3.org/2005/Atom'>
<title>BMC/Intel-BMC/linux.git/drivers/md/md-cluster.c, branch dev-4.3</title>
<subtitle>Intel OpenBMC Linux kernel source tree (mirror)</subtitle>
<id>https://git.radix-linux.su/BMC/Intel-BMC/linux.git/atom?h=dev-4.3</id>
<link rel='self' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/atom?h=dev-4.3'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/'/>
<updated>2015-08-31T17:43:17+00:00</updated>
<entry>
<title>md-cluster: remove inappropriate try_module_get from join()</title>
<updated>2015-08-31T17:43:17+00:00</updated>
<author>
<name>NeilBrown</name>
<email>neilb@suse.com</email>
</author>
<published>2015-08-14T00:22:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=18b9f67962eb890da0c053e04c3cf0e91871d4fa'/>
<id>urn:sha1:18b9f67962eb890da0c053e04c3cf0e91871d4fa</id>
<content type='text'>
md_setup_cluster already calls try_module_get(), so this
try_module_get isn't needed.
Also, there is no matching module_put (except in error patch),
so this leaves an unbalanced module count.

Signed-off-by: NeilBrown &lt;neilb@suse.com&gt;
</content>
</entry>
<entry>
<title>md-cluster: Read the disk bitmap sb and check if it needs recovery</title>
<updated>2015-08-31T17:42:41+00:00</updated>
<author>
<name>Guoqing Jiang</name>
<email>gqjiang@suse.com</email>
</author>
<published>2015-07-10T09:01:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=abb9b22ac948000ae156cd2d115c8632ec30a2ce'/>
<id>urn:sha1:abb9b22ac948000ae156cd2d115c8632ec30a2ce</id>
<content type='text'>
In gather_all_resync_info, we need to read the disk bitmap sb and
check if it needs recovery.

Reviewed-by: Goldwyn Rodrigues &lt;rgoldwyn@suse.com&gt;
Signed-off-by: Guoqing Jiang &lt;gqjiang@suse.com&gt;
Signed-off-by: NeilBrown &lt;neilb@suse.com&gt;
</content>
</entry>
<entry>
<title>md-cluster: only call complete(&amp;cinfo-&gt;completion) when node join cluster</title>
<updated>2015-08-31T17:42:31+00:00</updated>
<author>
<name>Guoqing Jiang</name>
<email>gqjiang@suse.com</email>
</author>
<published>2015-07-10T09:01:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=eece075cda38f55fc5829b5f9ec5fb919c561d81'/>
<id>urn:sha1:eece075cda38f55fc5829b5f9ec5fb919c561d81</id>
<content type='text'>
Introduce MD_CLUSTER_BEGIN_JOIN_CLUSTER flag to make sure
complete(&amp;cinfo-&gt;completion) is only be invoked when node
join cluster. Otherwise node failure could also call the
complete, and it doesn't make sense to do it.

Reviewed-by: Goldwyn Rodrigues &lt;rgoldwyn@suse.com&gt;
Signed-off-by: Guoqing Jiang &lt;gqjiang@suse.com&gt;
Signed-off-by: NeilBrown &lt;neilb@suse.com&gt;
</content>
</entry>
<entry>
<title>md-cluster: add missed lockres_free</title>
<updated>2015-08-31T17:42:23+00:00</updated>
<author>
<name>Guoqing Jiang</name>
<email>gqjiang@suse.com</email>
</author>
<published>2015-07-10T09:01:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=6e6d9f2cda47745a3abcb6609b1dee0e831161d8'/>
<id>urn:sha1:6e6d9f2cda47745a3abcb6609b1dee0e831161d8</id>
<content type='text'>
We also need to free the lock resource before goto out.

Reviewed-by: Goldwyn Rodrigues &lt;rgoldwyn@suse.com&gt;
Signed-off-by: Guoqing Jiang &lt;gqjiang@suse.com&gt;
Signed-off-by: NeilBrown &lt;neilb@suse.com&gt;
</content>
</entry>
<entry>
<title>md-cluster: remove the unused sb_lock</title>
<updated>2015-08-31T17:42:14+00:00</updated>
<author>
<name>Guoqing Jiang</name>
<email>gqjiang@suse.com</email>
</author>
<published>2015-07-10T09:01:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=b2b9bfff0aa721a04a3924ed451c417d2bd9ed15'/>
<id>urn:sha1:b2b9bfff0aa721a04a3924ed451c417d2bd9ed15</id>
<content type='text'>
The sb_lock is not used anywhere, so let's remove it.

Reviewed-by: Goldwyn Rodrigues &lt;rgoldwyn@suse.com&gt;
Signed-off-by: Guoqing Jiang &lt;gqjiang@suse.com&gt;
Signed-off-by: NeilBrown &lt;neilb@suse.com&gt;
</content>
</entry>
<entry>
<title>md-cluster: init suspend_list and suspend_lock early in join</title>
<updated>2015-08-31T17:42:05+00:00</updated>
<author>
<name>Guoqing Jiang</name>
<email>gqjiang@suse.com</email>
</author>
<published>2015-07-10T09:01:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=9e3072e373320b331512e24f6650efa0a09720af'/>
<id>urn:sha1:9e3072e373320b331512e24f6650efa0a09720af</id>
<content type='text'>
If the node just join the cluster, and receive the msg from other nodes
before init suspend_list, it will cause kernel crash due to NULL pointer
dereference, so move the initializations early to fix the bug.

md-cluster: Joined cluster 3578507b-e0cb-6d4f-6322-696cd7b1b10c slot 3
BUG: unable to handle kernel NULL pointer dereference at           (null)
... ... ...
Call Trace:
[&lt;ffffffffa0444924&gt;] process_recvd_msg+0x2e4/0x330 [md_cluster]
[&lt;ffffffffa0444a06&gt;] recv_daemon+0x96/0x170 [md_cluster]
[&lt;ffffffffa045189d&gt;] md_thread+0x11d/0x170 [md_mod]
[&lt;ffffffff810768c4&gt;] kthread+0xb4/0xc0
[&lt;ffffffff8151927c&gt;] ret_from_fork+0x7c/0xb0
... ... ...
RIP  [&lt;ffffffffa0443581&gt;] __remove_suspend_info+0x11/0xa0 [md_cluster]

Reviewed-by: Goldwyn Rodrigues &lt;rgoldwyn@suse.com&gt;
Signed-off-by: Guoqing Jiang &lt;gqjiang@suse.com&gt;
Signed-off-by: NeilBrown &lt;neilb@suse.com&gt;
</content>
</entry>
<entry>
<title>md-cluster: add the error check if failed to get dlm lock</title>
<updated>2015-08-31T17:41:56+00:00</updated>
<author>
<name>Guoqing Jiang</name>
<email>gqjiang@suse.com</email>
</author>
<published>2015-07-10T09:01:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=b5ef56789b808a57fcd07271ff509911662fd877'/>
<id>urn:sha1:b5ef56789b808a57fcd07271ff509911662fd877</id>
<content type='text'>
In complicated cluster environment, it is possible that the
dlm lock couldn't be get/convert on purpose, the related err
info is added for better debug potential issue.

For lockres_free, if the lock is blocking by a lock request or
conversion request, then dlm_unlock just put it back to grant
queue, so need to ensure the lock is free finally.

Signed-off-by: Guoqing Jiang &lt;gqjiang@suse.com&gt;
Signed-off-by: NeilBrown &lt;neilb@suse.com&gt;
</content>
</entry>
<entry>
<title>md-cluster: init completion within lockres_init</title>
<updated>2015-08-31T17:41:50+00:00</updated>
<author>
<name>Guoqing Jiang</name>
<email>gqjiang@suse.com</email>
</author>
<published>2015-07-10T09:01:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=b83d51c0785c34d552111f38fbecbe00cd58b913'/>
<id>urn:sha1:b83d51c0785c34d552111f38fbecbe00cd58b913</id>
<content type='text'>
We should init completion within lockres_init, otherwise
completion could be initialized more than one time during
it's life cycle.

Reviewed-by: Goldwyn Rodrigues &lt;rgoldwyn@suse.com&gt;
Signed-off-by: Guoqing Jiang &lt;gqjiang@suse.com&gt;
Signed-off-by: NeilBrown &lt;neilb@suse.com&gt;
</content>
</entry>
<entry>
<title>md-cluster: fix deadlock issue on message lock</title>
<updated>2015-08-31T17:41:41+00:00</updated>
<author>
<name>Guoqing Jiang</name>
<email>gqjiang@suse.com</email>
</author>
<published>2015-07-10T09:01:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=66099bb0ee6c20f91ace3fa5f82202fbceb67d8e'/>
<id>urn:sha1:66099bb0ee6c20f91ace3fa5f82202fbceb67d8e</id>
<content type='text'>
There is problem with previous communication mechanism, and we got below
deadlock scenario with cluster which has 3 nodes.

	Sender                	    Receiver        		Receiver

	token(EX)
       message(EX)
      writes message
   downconverts message(CR)
      requests ack(EX)
		                  get message(CR)            gets message(CR)
                		  reads message                reads message
		               requests EX on message    requests EX on message

To fix this problem, we do the following changes:

1. the sender downconverts MESSAGE to CW rather than CR.
2. and the receiver request PR lock not EX lock on message.

And in case we failed to down-convert EX to CW on message, it is better to
unlock message otherthan still hold the lock.

Reviewed-by: Goldwyn Rodrigues &lt;rgoldwyn@suse.com&gt;
Signed-off-by: Lidong Zhong &lt;ldzhong@suse.com&gt;
Signed-off-by: Guoqing Jiang &lt;gqjiang@suse.com&gt;
Signed-off-by: NeilBrown &lt;neilb@suse.com&gt;
</content>
</entry>
<entry>
<title>md-cluster: transfer the resync ownership to another node</title>
<updated>2015-08-31T17:41:12+00:00</updated>
<author>
<name>Guoqing Jiang</name>
<email>gqjiang@suse.com</email>
</author>
<published>2015-07-10T08:54:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=dc737d7c3d62d2cd2b62c7739aaa7604330c3dd8'/>
<id>urn:sha1:dc737d7c3d62d2cd2b62c7739aaa7604330c3dd8</id>
<content type='text'>
When node A stops an array while the array is doing a resync, we need
to let another node B take over the resync task.

To achieve the goal, we need the A send an explicit BITMAP_NEEDS_SYNC
message to the cluster. And the node B which received that message will
invoke __recover_slot to do resync.

Reviewed-by: Goldwyn Rodrigues &lt;rgoldwyn@suse.com&gt;
Signed-off-by: Guoqing Jiang &lt;gqjiang@suse.com&gt;
Signed-off-by: NeilBrown &lt;neilb@suse.com&gt;
</content>
</entry>
</feed>
