<feed xmlns='http://www.w3.org/2005/Atom'>
<title>user/sven/linux.git/fs, branch v2.6.34.7</title>
<subtitle>Linux Kernel
</subtitle>
<id>https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v2.6.34.7</id>
<link rel='self' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v2.6.34.7'/>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/'/>
<updated>2010-08-26T23:43:31Z</updated>
<entry>
<title>nfs: Add "lookupcache" to displayed mount options</title>
<updated>2010-08-26T23:43:31Z</updated>
<author>
<name>Patrick J. LoPresti</name>
<email>lopresti@gmail.com</email>
</author>
<published>2010-08-10T21:28:01Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=e5f7195931f72fedf64af1deb6193c8e0acc26b3'/>
<id>urn:sha1:e5f7195931f72fedf64af1deb6193c8e0acc26b3</id>
<content type='text'>
commit 9b00c64318cc337846a7a08a5678f5f19aeff188 upstream.

Running "cat /proc/mounts" fails to display the "lookupcache" option.
This oversight cost me a bunch of wasted time recently.

The following simple patch fixes it.

Signed-off-by: Patrick LoPresti &lt;lopresti@gmail.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>Fix the nested PR lock calling issue in ACL</title>
<updated>2010-08-26T23:43:27Z</updated>
<author>
<name>Jiaju Zhang</name>
<email>jjzhang.linux@gmail.com</email>
</author>
<published>2010-07-28T05:21:06Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=a0f9476e152acb0ce849dc05c66b79a186fbb5ce'/>
<id>urn:sha1:a0f9476e152acb0ce849dc05c66b79a186fbb5ce</id>
<content type='text'>
commit 845b6cf34150100deb5f58c8a37a372b111f2918 upstream.

Hi,

Thanks a lot for all the review and comments so far;) I'd like to send
the improved (V4) version of this patch.

This patch fixes a deadlock in OCFS2 ACL. We found this bug in OCFS2
and Samba integration using scenario, the symptom is several smbd
processes will be hung under heavy workload. Finally we found out it
is the nested PR lock calling that leads to this deadlock:

 node1        node2
              gr PR
                |
                V
 PR(EX)---&gt; BAST:OCFS2_LOCK_BLOCKED
                |
                V
              rq PR
                |
                V
              wait=1

After requesting the 2nd PR lock, the process "smbd" went into D
state. It can only be woken up when the 1st PR lock's RO holder equals
zero. There should be an ocfs2_inode_unlock in the calling path later
on, which can decrement the RO holder. But since it has been in
uninterruptible sleep, the unlock function has no chance to be called.

The related stack trace is:
smbd          D ffff8800013d0600     0  9522   5608 0x00000000
 ffff88002ca7fb18 0000000000000282 ffff88002f964500 ffff88002ca7fa98
 ffff8800013d0600 ffff88002ca7fae0 ffff88002f964340 ffff88002f964340
 ffff88002ca7ffd8 ffff88002ca7ffd8 ffff88002f964340 ffff88002f964340
Call Trace:
[&lt;ffffffff80350425&gt;] schedule_timeout+0x175/0x210
[&lt;ffffffff8034f580&gt;] wait_for_common+0xf0/0x210
[&lt;ffffffffa03e12b9&gt;] __ocfs2_cluster_lock+0x3b9/0xa90 [ocfs2]
[&lt;ffffffffa03e7665&gt;] ocfs2_inode_lock_full_nested+0x255/0xdb0 [ocfs2]
[&lt;ffffffffa0446019&gt;] ocfs2_get_acl+0x69/0x120 [ocfs2]
[&lt;ffffffffa0446368&gt;] ocfs2_check_acl+0x28/0x80 [ocfs2]
[&lt;ffffffff800e3507&gt;] acl_permission_check+0x57/0xb0
[&lt;ffffffff800e357d&gt;] generic_permission+0x1d/0xc0
[&lt;ffffffffa03eecea&gt;] ocfs2_permission+0x10a/0x1d0 [ocfs2]
[&lt;ffffffff800e3f65&gt;] inode_permission+0x45/0x100
[&lt;ffffffff800d86b3&gt;] sys_chdir+0x53/0x90
[&lt;ffffffff80007458&gt;] system_call_fastpath+0x16/0x1b
[&lt;00007f34a4ef6927&gt;] 0x7f34a4ef6927

For details, please see:
https://bugzilla.novell.com/show_bug.cgi?id=614332 and
http://oss.oracle.com/bugzilla/show_bug.cgi?id=1278

Signed-off-by: Jiaju Zhang &lt;jjzhang@suse.de&gt;
Acked-by: Mark Fasheh &lt;mfasheh@suse.com&gt;
Signed-off-by: Joel Becker &lt;joel.becker@oracle.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>nilfs2: fix list corruption after ifile creation failure</title>
<updated>2010-08-26T23:43:23Z</updated>
<author>
<name>Ryusuke Konishi</name>
<email>konishi.ryusuke@lab.ntt.co.jp</email>
</author>
<published>2010-08-13T03:42:24Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=28d07211a380ec003784c454c6438c72e458c5ef'/>
<id>urn:sha1:28d07211a380ec003784c454c6438c72e458c5ef</id>
<content type='text'>
commit af4e36318edb848fcc0a8d5f75000ca00cdc7595 upstream.

If nilfs_attach_checkpoint() gets a memory allocation failure during
creation of ifile, it will return without removing nilfs_sb_info
struct from ns_supers list.  When a concurrently mounted snapshot is
unmounted or another new snapshot is mounted after that, this causes
kernel oops as below:

&gt; BUG: unable to handle kernel NULL pointer dereference at (null)
&gt; IP: [&lt;f83662ff&gt;] nilfs_find_sbinfo+0x74/0xa4 [nilfs2]
&gt; *pde = 00000000
&gt; Oops: 0000 [#1] SMP
&lt;snip&gt;
&gt; Call Trace:
&gt;  [&lt;f835dc29&gt;] ? nilfs_get_sb+0x165/0x532 [nilfs2]
&gt;  [&lt;c1173c87&gt;] ? ida_get_new_above+0x16d/0x187
&gt;  [&lt;c109a7f8&gt;] ? alloc_vfsmnt+0x7e/0x10a
&gt;  [&lt;c1070790&gt;] ? kstrdup+0x2c/0x40
&gt;  [&lt;c1089041&gt;] ? vfs_kern_mount+0x96/0x14e
&gt;  [&lt;c108913d&gt;] ? do_kern_mount+0x32/0xbd
&gt;  [&lt;c109b331&gt;] ? do_mount+0x642/0x6a1
&gt;  [&lt;c101a415&gt;] ? do_page_fault+0x0/0x2d1
&gt;  [&lt;c1099c00&gt;] ? copy_mount_options+0x80/0xe2
&gt;  [&lt;c10705d8&gt;] ? strndup_user+0x48/0x67
&gt;  [&lt;c109b3f1&gt;] ? sys_mount+0x61/0x90
&gt;  [&lt;c10027cc&gt;] ? sysenter_do_call+0x12/0x22

This fixes the problem.

Signed-off-by: Ryusuke Konishi &lt;konishi.ryusuke@lab.ntt.co.jp&gt;
Tested-by: Ryusuke Konishi &lt;konishi.ryusuke@lab.ntt.co.jp&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>ocfs2/dlm: remove potential deadlock -V3</title>
<updated>2010-08-26T23:43:21Z</updated>
<author>
<name>Wengang Wang</name>
<email>wen.gang.wang@oracle.com</email>
</author>
<published>2010-07-30T15:18:00Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=c93e8d313c55fc7b02e60f7904b1c30317db9919'/>
<id>urn:sha1:c93e8d313c55fc7b02e60f7904b1c30317db9919</id>
<content type='text'>
commit b11f1f1ab73fd358b1b734a9427744802202ba68 upstream.

When we need to take both dlm_domain_lock and dlm-&gt;spinlock, we should take
them in order of: dlm_domain_lock then dlm-&gt;spinlock.

There is pathes disobey this order. That is calling dlm_lockres_put() with
dlm-&gt;spinlock held in dlm_run_purge_list. dlm_lockres_put() calls dlm_put() at
the ref and dlm_put() locks on dlm_domain_lock.

Fix:
Don't grab/put the dlm when the initialising/releasing lockres.
That grab is not required because we don't call dlm_unregister_domain()
based on refcount.

Signed-off-by: Wengang Wang &lt;wen.gang.wang@oracle.com&gt;
Signed-off-by: Joel Becker &lt;joel.becker@oracle.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>ocfs2/dlm: avoid incorrect bit set in refmap on recovery master</title>
<updated>2010-08-26T23:43:20Z</updated>
<author>
<name>Wengang Wang</name>
<email>wen.gang.wang@oracle.com</email>
</author>
<published>2010-07-30T08:14:44Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=1dbe8a5be1d1138d296ddd6029cbaebbfffa050e'/>
<id>urn:sha1:1dbe8a5be1d1138d296ddd6029cbaebbfffa050e</id>
<content type='text'>
commit a524812b7eaa7783d7811198921100f079034e61 upstream.

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;
Signed-off-by: Joel Becker &lt;joel.becker@oracle.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>ocfs2: Count more refcount records in file system fragmentation.</title>
<updated>2010-08-26T23:43:20Z</updated>
<author>
<name>Tao Ma</name>
<email>tao.ma@oracle.com</email>
</author>
<published>2010-07-22T05:56:45Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=bc8a22fb9d870dd45202d3fbcf53f77f3b7e2a3a'/>
<id>urn:sha1:bc8a22fb9d870dd45202d3fbcf53f77f3b7e2a3a</id>
<content type='text'>
commit 8a2e70c40ff58f82dde67770e6623ca45f0cb0c8 upstream.

The refcount record calculation in ocfs2_calc_refcount_meta_credits
is too optimistic that we can always allocate contiguous clusters
and handle an already existed refcount rec as a whole. Actually
because of file system fragmentation, we may have the chance to split
a refcount record into 3 parts during the transaction. So consider
the worst case in record calculation.

Signed-off-by: Tao Ma &lt;tao.ma@oracle.com&gt;
Signed-off-by: Joel Becker &lt;joel.becker@oracle.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>ocfs2 fix o2dlm dlm run purgelist (rev 3)</title>
<updated>2010-08-26T23:43:19Z</updated>
<author>
<name>Srinivas Eeda</name>
<email>srinivas.eeda@oracle.com</email>
</author>
<published>2010-07-19T23:04:12Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=5509b7d7cae6cb8560f531146570949734116caf'/>
<id>urn:sha1:5509b7d7cae6cb8560f531146570949734116caf</id>
<content type='text'>
commit 7beaf243787f85a2ef9213ccf13ab4a243283fde upstream.

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;
Signed-off-by: Joel Becker &lt;joel.becker@oracle.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>ocfs2/dlm: fix a dead lock</title>
<updated>2010-08-26T23:43:18Z</updated>
<author>
<name>Wengang Wang</name>
<email>wen.gang.wang@oracle.com</email>
</author>
<published>2010-07-16T15:13:33Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=ea156ca43e1daf741590124281f9ba9c7ee61c79'/>
<id>urn:sha1:ea156ca43e1daf741590124281f9ba9c7ee61c79</id>
<content type='text'>
commit 6d98c3ccb52f692f1a60339dde7c700686a5568b upstream.

When we have to take both dlm-&gt;master_lock and lockres-&gt;spinlock,
take them in order

lockres-&gt;spinlock and then dlm-&gt;master_lock.

The patch fixes a violation of the rule.
We can simply move taking dlm-&gt;master_lock to where we have dropped res-&gt;spinlock
since when we access res-&gt;state and free mle memory we don't need master_lock's
protection.

Signed-off-by: Wengang Wang &lt;wen.gang.wang@oracle.com&gt;
Signed-off-by: Joel Becker &lt;joel.becker@oracle.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>ocfs2: do not overwrite error codes in ocfs2_init_acl</title>
<updated>2010-08-26T23:43:18Z</updated>
<author>
<name>Tiger Yang</name>
<email>tiger.yang@oracle.com</email>
</author>
<published>2010-07-16T03:21:23Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=9c03fdacc7f541bc3dd67af0955f8e90eadc8c6e'/>
<id>urn:sha1:9c03fdacc7f541bc3dd67af0955f8e90eadc8c6e</id>
<content type='text'>
commit 6eda3dd33f8a0ce58ee56a11351758643a698db4 upstream.

Setting the acl while creating a new inode depends on
the error codes of posix_acl_create_masq. This patch fix
a issue of overwriting the error codes of it.

Reported-by: Pawel Zawora &lt;pzawora@gmail.com&gt;
Signed-off-by: Tiger Yang &lt;tiger.yang@oracle.com&gt;
Signed-off-by: Joel Becker &lt;joel.becker@oracle.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>mm: fix up some user-visible effects of the stack guard page</title>
<updated>2010-08-20T18:51:50Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2010-08-15T18:35:52Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=57cbde5be4dce123132bc3dcabb687147de87f30'/>
<id>urn:sha1:57cbde5be4dce123132bc3dcabb687147de87f30</id>
<content type='text'>
commit d7824370e26325c881b665350ce64fb0a4fde24a upstream.

This commit makes the stack guard page somewhat less visible to user
space. It does this by:

 - not showing the guard page in /proc/&lt;pid&gt;/maps

   It looks like lvm-tools will actually read /proc/self/maps to figure
   out where all its mappings are, and effectively do a specialized
   "mlockall()" in user space.  By not showing the guard page as part of
   the mapping (by just adding PAGE_SIZE to the start for grows-up
   pages), lvm-tools ends up not being aware of it.

 - by also teaching the _real_ mlock() functionality not to try to lock
   the guard page.

   That would just expand the mapping down to create a new guard page,
   so there really is no point in trying to lock it in place.

It would perhaps be nice to show the guard page specially in
/proc/&lt;pid&gt;/maps (or at least mark grow-down segments some way), but
let's not open ourselves up to more breakage by user space from programs
that depends on the exact deails of the 'maps' file.

Special thanks to Henrique de Moraes Holschuh for diving into lvm-tools
source code to see what was going on with the whole new warning.

Reported-and-tested-by: François Valenduc &lt;francois.valenduc@tvcablenet.be
Reported-by: Henrique de Moraes Holschuh &lt;hmh@hmh.eng.br&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
</feed>
