<feed xmlns='http://www.w3.org/2005/Atom'>
<title>BMC/Intel-BMC/linux.git/fs/ocfs2/dlm/dlmthread.c, branch dev</title>
<subtitle>Intel OpenBMC Linux kernel source tree (mirror)</subtitle>
<id>https://git.radix-linux.su/BMC/Intel-BMC/linux.git/atom?h=dev</id>
<link rel='self' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/atom?h=dev'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/'/>
<updated>2014-06-23T23:47:45+00:00</updated>
<entry>
<title>ocfs2/dlm: do not purge lockres that is queued for assert master</title>
<updated>2014-06-23T23:47:45+00:00</updated>
<author>
<name>Xue jiufei</name>
<email>xuejiufei@huawei.com</email>
</author>
<published>2014-06-23T20:22:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=ac4fef4d23ed879a7fd11ab24ccd2e1464277e9a'/>
<id>urn:sha1:ac4fef4d23ed879a7fd11ab24ccd2e1464277e9a</id>
<content type='text'>
When workqueue is delayed, it may occur that a lockres is purged while it
is still queued for master assert.  it may trigger BUG() as follows.

N1                                         N2
dlm_get_lockres()
-&gt;dlm_do_master_requery
                                  is the master of lockres,
                                  so queue assert_master work

                                  dlm_thread() start running
                                  and purge the lockres

                                  dlm_assert_master_worker()
                                  send assert master message
                                  to other nodes
receiving the assert_master
message, set master to N2

dlmlock_remote() send create_lock message to N2, but receive DLM_IVLOCKID,
if it is RECOVERY lockres, it triggers the BUG().

Another BUG() is triggered when N3 become the new master and send
assert_master to N1, N1 will trigger the BUG() because owner doesn't
match.  So we should not purge lockres when it is queued for assert
master.

Signed-off-by: joyce.xue &lt;xuejiufei@huawei.com&gt;
Reviewed-by: Mark Fasheh &lt;mfasheh@suse.de&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/dlm: fix misuse of list_move_tail() in dlm_run_purge_list()</title>
<updated>2014-06-23T23:47:45+00:00</updated>
<author>
<name>Xue jiufei</name>
<email>xuejiufei@huawei.com</email>
</author>
<published>2014-06-23T20:22:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=a270c6d3c0d7ba914bd82da34152d1102920d805'/>
<id>urn:sha1:a270c6d3c0d7ba914bd82da34152d1102920d805</id>
<content type='text'>
When a lockres in purge list but is still in use, it should be moved to
the tail of purge list.  dlm_thread will continue to check next lockres in
purge list.  However, code list_move_tail(&amp;dlm-&gt;purge_list,
&amp;lockres-&gt;purge) will do *no* movements, so dlm_thread will purge the same
lockres in this loop again and again.  If it is in use for a long time,
other lockres will not be processed.

Signed-off-by: Yiwen Jiang &lt;jiangyiwen@huawei.com&gt;
Signed-off-by: joyce.xue &lt;xuejiufei@huawei.com&gt;
Reviewed-by: Mark Fasheh &lt;mfasheh@suse.de&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: use list_for_each_entry() instead of list_for_each()</title>
<updated>2013-09-11T22:56:36+00:00</updated>
<author>
<name>Dong Fang</name>
<email>yp.fangdong@gmail.com</email>
</author>
<published>2013-09-11T21:19:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=df53cd3b70712cd136f10ef79457623c5c3764a4'/>
<id>urn:sha1:df53cd3b70712cd136f10ef79457623c5c3764a4</id>
<content type='text'>
[dan.carpenter@oracle.com: fix up some NULL dereference bugs]
Signed-off-by: Dong Fang &lt;yp.fangdong@gmail.com&gt;
Cc: Mark Fasheh &lt;mfasheh@suse.com&gt;
Cc: Joel Becker &lt;jlbec@evilplan.org&gt;
Cc: Jeff Liu &lt;jeff.liu@oracle.com&gt;
Signed-off-by: Dan Carpenter &lt;dan.carpenter@oracle.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/dlm: Take inflight reference count for remotely mastered resources too</title>
<updated>2011-07-24T17:29:54+00:00</updated>
<author>
<name>Sunil Mushran</name>
<email>sunil.mushran@oracle.com</email>
</author>
<published>2011-07-24T17:29:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=ff0a522e7db79625aa27a433467eb94c5e255718'/>
<id>urn:sha1:ff0a522e7db79625aa27a433467eb94c5e255718</id>
<content type='text'>
The inflight reference count, in the lock resource, is taken to pin the resource
in memory. We take it when a new resource is created and release it after a
lock is attached to it. We do this to prevent the resource from getting purged
prematurely.

Earlier this reference count was being taken for locally mastered resources
only. This patch extends the same functionality for remotely mastered ones.

We are doing this because the same premature purging could occur for remotely
mastered resources if the remote node were to die before completion of the
create lock.

Fix for Oracle bug#12405575.

Signed-off-by: Sunil Mushran &lt;sunil.mushran@oracle.com&gt;
</content>
</entry>
<entry>
<title>ocfs2/dlm: Trace insert/remove of resource to/from hash</title>
<updated>2011-07-24T17:27:54+00:00</updated>
<author>
<name>Sunil Mushran</name>
<email>sunil.mushran@oracle.com</email>
</author>
<published>2011-07-24T17:27:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=e9f0b6a6233105c188064328c3f15e21942d0241'/>
<id>urn:sha1:e9f0b6a6233105c188064328c3f15e21942d0241</id>
<content type='text'>
Add mlog to trace adding and removing the resource from/to the hash table.

Signed-off-by: Sunil Mushran &lt;sunil.mushran@oracle.com&gt;
</content>
</entry>
<entry>
<title>ocfs2/dlm: Clean up messages in o2dlm</title>
<updated>2011-07-24T17:23:54+00:00</updated>
<author>
<name>Sunil Mushran</name>
<email>sunil.mushran@oracle.com</email>
</author>
<published>2011-07-24T17:23:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=8decab3c8dadcdf4f54ffb30df6e6f67b398b6e0'/>
<id>urn:sha1:8decab3c8dadcdf4f54ffb30df6e6f67b398b6e0</id>
<content type='text'>
o2dlm messages needed a facelift.

Signed-off-by: Sunil Mushran &lt;sunil.mushran@oracle.com&gt;
</content>
</entry>
<entry>
<title>ocfs2/dlm: Cleanup mlogs in dlmthread.c, dlmast.c and dlmdomain.c</title>
<updated>2010-12-16T08:46:05+00:00</updated>
<author>
<name>Sunil Mushran</name>
<email>sunil.mushran@oracle.com</email>
</author>
<published>2010-11-19T23:06:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=8e17d16f401f7c60908726e070bfa5cbdf31e2f3'/>
<id>urn:sha1:8e17d16f401f7c60908726e070bfa5cbdf31e2f3</id>
<content type='text'>
Add the domain name and the resource name in the mlogs.

Signed-off-by: Sunil Mushran &lt;sunil.mushran@oracle.com&gt;
Signed-off-by: Joel Becker &lt;joel.becker@oracle.com&gt;
</content>
</entry>
<entry>
<title>ocfs2/dlm: avoid incorrect bit set in refmap on recovery master</title>
<updated>2010-08-07T17:49:41+00:00</updated>
<author>
<name>Wengang Wang</name>
<email>wen.gang.wang@oracle.com</email>
</author>
<published>2010-07-30T08:14:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=a524812b7eaa7783d7811198921100f079034e61'/>
<id>urn:sha1:a524812b7eaa7783d7811198921100f079034e61</id>
<content type='text'>
In the following situation, there remains an incorrect bit in refmap on the
recovery master. Finally the recovery master will fail at purging the lockres
due to the incorrect bit in refmap.

1) node A has no interest on lockres A any longer, so it is purging it.
2) the owner of lockres A is node B, so node A is sending de-ref message
to node B.
3) at this time, node B crashed. node C becomes the recovery master. it recovers
lockres A(because the master is the dead node B).
4) node A migrated lockres A to node C with a refbit there.
5) node A failed to send de-ref message to node B because it crashed. The failure
is ignored. no other action is done for lockres A any more.

For mormal, re-send the deref message to it to recovery master can fix it. Well,
ignoring the failure of deref to the original master and not recovering the lockres
to recovery master has the same effect. And the later is simpler.

Signed-off-by: Wengang Wang &lt;wen.gang.wang@oracle.com&gt;
Acked-by: Srinivas Eeda &lt;srinivas.eeda@oracle.com&gt;
Cc: stable@kernel.org
Signed-off-by: Joel Becker &lt;joel.becker@oracle.com&gt;
</content>
</entry>
<entry>
<title>ocfs2 fix o2dlm dlm run purgelist (rev 3)</title>
<updated>2010-08-07T17:44:40+00:00</updated>
<author>
<name>Srinivas Eeda</name>
<email>srinivas.eeda@oracle.com</email>
</author>
<published>2010-07-19T23:04:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=7beaf243787f85a2ef9213ccf13ab4a243283fde'/>
<id>urn:sha1:7beaf243787f85a2ef9213ccf13ab4a243283fde</id>
<content type='text'>
This patch fixes two problems in dlm_run_purgelist

1. If a lockres is found to be in use, dlm_run_purgelist keeps trying to purge
the same lockres instead of trying the next lockres.

2. When a lockres is found unused, dlm_run_purgelist releases lockres spinlock
before setting DLM_LOCK_RES_DROPPING_REF and calls dlm_purge_lockres.
spinlock is reacquired but in this window lockres can get reused. This leads
to BUG.

This patch modifies dlm_run_purgelist to skip lockres if it's in use and purge
 next lockres. It also sets DLM_LOCK_RES_DROPPING_REF before releasing the
lockres spinlock protecting it from getting reused.

Signed-off-by: Srinivas Eeda &lt;srinivas.eeda@oracle.com&gt;
Acked-by: Sunil Mushran &lt;sunil.mushran@oracle.com&gt;
Cc: stable@kernel.org
Signed-off-by: Joel Becker &lt;joel.becker@oracle.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2</title>
<updated>2010-05-21T14:20:17+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2010-05-21T14:20:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=03e62303cf56e87337115f14842321043df2b4bb'/>
<id>urn:sha1:03e62303cf56e87337115f14842321043df2b4bb</id>
<content type='text'>
* 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2: (47 commits)
  ocfs2: Silence a gcc warning.
  ocfs2: Don't retry xattr set in case value extension fails.
  ocfs2:dlm: avoid dlm-&gt;ast_lock lockres-&gt;spinlock dependency break
  ocfs2: Reset xattr value size after xa_cleanup_value_truncate().
  fs/ocfs2/dlm: Use kstrdup
  fs/ocfs2/dlm: Drop memory allocation cast
  Ocfs2: Optimize punching-hole code.
  Ocfs2: Make ocfs2_find_cpos_for_left_leaf() public.
  Ocfs2: Fix hole punching to correctly do CoW during cluster zeroing.
  Ocfs2: Optimize ocfs2 truncate to use ocfs2_remove_btree_range() instead.
  ocfs2: Block signals for mkdir/link/symlink/O_CREAT.
  ocfs2: Wrap signal blocking in void functions.
  ocfs2/dlm: Increase o2dlm lockres hash size
  ocfs2: Make ocfs2_extend_trans() really extend.
  ocfs2/trivial: Code cleanup for allocation reservation.
  ocfs2: make ocfs2_adjust_resv_from_alloc simple.
  ocfs2: Make nointr a default mount option
  ocfs2/dlm: Make o2dlm domain join/leave messages KERN_NOTICE
  o2net: log socket state changes
  ocfs2: print node # when tcp fails
  ...
</content>
</entry>
</feed>
