<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/fs/ceph/xattr.c, branch v3.10.41</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>ceph: fix sleeping function called from invalid context.</title>
<updated>2013-07-13T18:42:26+00:00</updated>
<author>
<name>majianpeng</name>
<email>majianpeng@gmail.com</email>
</author>
<published>2013-06-19T06:58:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=bd4d4d8725c31dee623999ff7904ee36490ae884'/>
<id>bd4d4d8725c31dee623999ff7904ee36490ae884</id>
<content type='text'>
commit a1dc1937337a93e699eaa56968b7de6e1a9e77cf upstream.

[ 1121.231883] BUG: sleeping function called from invalid context at kernel/rwsem.c:20
[ 1121.231935] in_atomic(): 1, irqs_disabled(): 0, pid: 9831, name: mv
[ 1121.231971] 1 lock held by mv/9831:
[ 1121.231973]  #0:  (&amp;(&amp;ci-&gt;i_ceph_lock)-&gt;rlock){+.+...},at:[&lt;ffffffffa02bbd38&gt;] ceph_getxattr+0x58/0x1d0 [ceph]
[ 1121.231998] CPU: 3 PID: 9831 Comm: mv Not tainted 3.10.0-rc6+ #215
[ 1121.232000] Hardware name: To Be Filled By O.E.M. To Be Filled By
O.E.M./To be filled by O.E.M., BIOS 080015  11/09/2011
[ 1121.232027]  ffff88006d355a80 ffff880092f69ce0 ffffffff8168348c ffff880092f69cf8
[ 1121.232045]  ffffffff81070435 ffff88006d355a20 ffff880092f69d20 ffffffff816899ba
[ 1121.232052]  0000000300000004 ffff8800b76911d0 ffff88006d355a20 ffff880092f69d68
[ 1121.232056] Call Trace:
[ 1121.232062]  [&lt;ffffffff8168348c&gt;] dump_stack+0x19/0x1b
[ 1121.232067]  [&lt;ffffffff81070435&gt;] __might_sleep+0xe5/0x110
[ 1121.232071]  [&lt;ffffffff816899ba&gt;] down_read+0x2a/0x98
[ 1121.232080]  [&lt;ffffffffa02baf70&gt;] ceph_vxattrcb_layout+0x60/0xf0 [ceph]
[ 1121.232088]  [&lt;ffffffffa02bbd7f&gt;] ceph_getxattr+0x9f/0x1d0 [ceph]
[ 1121.232093]  [&lt;ffffffff81188d28&gt;] vfs_getxattr+0xa8/0xd0
[ 1121.232097]  [&lt;ffffffff8118900b&gt;] getxattr+0xab/0x1c0
[ 1121.232100]  [&lt;ffffffff811704f2&gt;] ? final_putname+0x22/0x50
[ 1121.232104]  [&lt;ffffffff81155f80&gt;] ? kmem_cache_free+0xb0/0x260
[ 1121.232107]  [&lt;ffffffff811704f2&gt;] ? final_putname+0x22/0x50
[ 1121.232110]  [&lt;ffffffff8109e63d&gt;] ? trace_hardirqs_on+0xd/0x10
[ 1121.232114]  [&lt;ffffffff816957a7&gt;] ? sysret_check+0x1b/0x56
[ 1121.232120]  [&lt;ffffffff81189c9c&gt;] SyS_fgetxattr+0x6c/0xc0
[ 1121.232125]  [&lt;ffffffff81695782&gt;] system_call_fastpath+0x16/0x1b
[ 1121.232129] BUG: scheduling while atomic: mv/9831/0x10000002
[ 1121.232154] 1 lock held by mv/9831:
[ 1121.232156]  #0:  (&amp;(&amp;ci-&gt;i_ceph_lock)-&gt;rlock){+.+...}, at:
[&lt;ffffffffa02bbd38&gt;] ceph_getxattr+0x58/0x1d0 [ceph]

I think move the ci-&gt;i_ceph_lock down is safe because we can't free
ceph_inode_info at there.

Signed-off-by: Jianpeng Ma &lt;majianpeng@gmail.com&gt;
Reviewed-by: Sage Weil &lt;sage@inktank.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit a1dc1937337a93e699eaa56968b7de6e1a9e77cf upstream.

[ 1121.231883] BUG: sleeping function called from invalid context at kernel/rwsem.c:20
[ 1121.231935] in_atomic(): 1, irqs_disabled(): 0, pid: 9831, name: mv
[ 1121.231971] 1 lock held by mv/9831:
[ 1121.231973]  #0:  (&amp;(&amp;ci-&gt;i_ceph_lock)-&gt;rlock){+.+...},at:[&lt;ffffffffa02bbd38&gt;] ceph_getxattr+0x58/0x1d0 [ceph]
[ 1121.231998] CPU: 3 PID: 9831 Comm: mv Not tainted 3.10.0-rc6+ #215
[ 1121.232000] Hardware name: To Be Filled By O.E.M. To Be Filled By
O.E.M./To be filled by O.E.M., BIOS 080015  11/09/2011
[ 1121.232027]  ffff88006d355a80 ffff880092f69ce0 ffffffff8168348c ffff880092f69cf8
[ 1121.232045]  ffffffff81070435 ffff88006d355a20 ffff880092f69d20 ffffffff816899ba
[ 1121.232052]  0000000300000004 ffff8800b76911d0 ffff88006d355a20 ffff880092f69d68
[ 1121.232056] Call Trace:
[ 1121.232062]  [&lt;ffffffff8168348c&gt;] dump_stack+0x19/0x1b
[ 1121.232067]  [&lt;ffffffff81070435&gt;] __might_sleep+0xe5/0x110
[ 1121.232071]  [&lt;ffffffff816899ba&gt;] down_read+0x2a/0x98
[ 1121.232080]  [&lt;ffffffffa02baf70&gt;] ceph_vxattrcb_layout+0x60/0xf0 [ceph]
[ 1121.232088]  [&lt;ffffffffa02bbd7f&gt;] ceph_getxattr+0x9f/0x1d0 [ceph]
[ 1121.232093]  [&lt;ffffffff81188d28&gt;] vfs_getxattr+0xa8/0xd0
[ 1121.232097]  [&lt;ffffffff8118900b&gt;] getxattr+0xab/0x1c0
[ 1121.232100]  [&lt;ffffffff811704f2&gt;] ? final_putname+0x22/0x50
[ 1121.232104]  [&lt;ffffffff81155f80&gt;] ? kmem_cache_free+0xb0/0x260
[ 1121.232107]  [&lt;ffffffff811704f2&gt;] ? final_putname+0x22/0x50
[ 1121.232110]  [&lt;ffffffff8109e63d&gt;] ? trace_hardirqs_on+0xd/0x10
[ 1121.232114]  [&lt;ffffffff816957a7&gt;] ? sysret_check+0x1b/0x56
[ 1121.232120]  [&lt;ffffffff81189c9c&gt;] SyS_fgetxattr+0x6c/0xc0
[ 1121.232125]  [&lt;ffffffff81695782&gt;] system_call_fastpath+0x16/0x1b
[ 1121.232129] BUG: scheduling while atomic: mv/9831/0x10000002
[ 1121.232154] 1 lock held by mv/9831:
[ 1121.232156]  #0:  (&amp;(&amp;ci-&gt;i_ceph_lock)-&gt;rlock){+.+...}, at:
[&lt;ffffffffa02bbd38&gt;] ceph_getxattr+0x58/0x1d0 [ceph]

I think move the ci-&gt;i_ceph_lock down is safe because we can't free
ceph_inode_info at there.

Signed-off-by: Jianpeng Ma &lt;majianpeng@gmail.com&gt;
Reviewed-by: Sage Weil &lt;sage@inktank.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>ceph: eliminate sparse warnings in fs code</title>
<updated>2013-02-25T21:37:14+00:00</updated>
<author>
<name>Alex Elder</name>
<email>elder@inktank.com</email>
</author>
<published>2013-02-19T18:25:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=2c3dd4ff595e604cd4c4c51cff7a208f23148c2d'/>
<id>2c3dd4ff595e604cd4c4c51cff7a208f23148c2d</id>
<content type='text'>
Fix the causes for sparse warnings reported in the ceph file system
code.  Here there are only two (and they're sort of silly but
they're easy to fix).

This partially resolves:
    http://tracker.ceph.com/issues/4184

Reported-by: Fengguang Wu &lt;fengguang.wu@intel.com&gt;
Signed-off-by: Alex Elder &lt;elder@inktank.com&gt;
Reviewed-by: Josh Durgin &lt;josh.durgin@inktank.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix the causes for sparse warnings reported in the ceph file system
code.  Here there are only two (and they're sort of silly but
they're easy to fix).

This partially resolves:
    http://tracker.ceph.com/issues/4184

Reported-by: Fengguang Wu &lt;fengguang.wu@intel.com&gt;
Signed-off-by: Alex Elder &lt;elder@inktank.com&gt;
Reviewed-by: Josh Durgin &lt;josh.durgin@inktank.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ceph: implement hidden per-field ceph.*.layout.* vxattrs</title>
<updated>2013-02-14T02:26:17+00:00</updated>
<author>
<name>Sage Weil</name>
<email>sage@inktank.com</email>
</author>
<published>2013-01-21T06:08:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=695b711933689ea51af782760f4b1e2c6a42a631'/>
<id>695b711933689ea51af782760f4b1e2c6a42a631</id>
<content type='text'>
Allow individual fields of the layout to be fetched via getxattr.
The ceph.dir.layout.* vxattr with "disappear" if the exists_cb
indicates there no dir layout set.

Signed-off-by: Sage Weil &lt;sage@inktank.com&gt;
Reviewed-by: Sam Lang &lt;sam.lang@inktank.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Allow individual fields of the layout to be fetched via getxattr.
The ceph.dir.layout.* vxattr with "disappear" if the exists_cb
indicates there no dir layout set.

Signed-off-by: Sage Weil &lt;sage@inktank.com&gt;
Reviewed-by: Sam Lang &lt;sam.lang@inktank.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ceph: add ceph.dir.layout vxattr</title>
<updated>2013-02-14T02:26:13+00:00</updated>
<author>
<name>Sage Weil</name>
<email>sage@inktank.com</email>
</author>
<published>2013-01-21T06:07:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=1f08f2b056ea6c2e12f4e95e88949a882a996208'/>
<id>1f08f2b056ea6c2e12f4e95e88949a882a996208</id>
<content type='text'>
This virtual xattr will only appear when there is a dir layout policy
set on the directory.  It can be set via setxattr and removed via
removexattr (implemented by the MDS).

Signed-off-by: Sage Weil &lt;sage@inktank.com&gt;
Reviewed-by: Sam Lang &lt;sam.lang@inktank.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This virtual xattr will only appear when there is a dir layout policy
set on the directory.  It can be set via setxattr and removed via
removexattr (implemented by the MDS).

Signed-off-by: Sage Weil &lt;sage@inktank.com&gt;
Reviewed-by: Sam Lang &lt;sam.lang@inktank.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ceph: change ceph.file.layout.* implementation, content</title>
<updated>2013-02-14T02:26:10+00:00</updated>
<author>
<name>Sage Weil</name>
<email>sage@inktank.com</email>
</author>
<published>2013-01-20T00:46:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=32ab0bd78d7d9235efb38ad5cba6a3a6b39a1da6'/>
<id>32ab0bd78d7d9235efb38ad5cba6a3a6b39a1da6</id>
<content type='text'>
Implement a new method to generate the ceph.file.layout vxattr using
the new framework.

Use 'stripe_unit' instead of 'chunk_size'.

Include pool name, either as a string or as an integer.

Signed-off-by: Sage Weil &lt;sage@inktank.com&gt;
Reviewed-by: Sam Lang &lt;sam.lang@inktank.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Implement a new method to generate the ceph.file.layout vxattr using
the new framework.

Use 'stripe_unit' instead of 'chunk_size'.

Include pool name, either as a string or as an integer.

Signed-off-by: Sage Weil &lt;sage@inktank.com&gt;
Reviewed-by: Sam Lang &lt;sam.lang@inktank.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ceph: fix listxattr handling for vxattrs</title>
<updated>2013-02-14T02:26:06+00:00</updated>
<author>
<name>Sage Weil</name>
<email>sage@inktank.com</email>
</author>
<published>2013-01-21T06:02:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=b65917dd2700b7d12e25e2e0bbfd58eb3c932158'/>
<id>b65917dd2700b7d12e25e2e0bbfd58eb3c932158</id>
<content type='text'>
Only include vxattrs in the result if they are not hidden and exist
(as determined by the exists_cb callback).

Note that the buffer size we return when 0 is passed in always includes
vxattrs that *might* exist, forming an upper bound.

Signed-off-by: Sage Weil &lt;sage@inktank.com&gt;
Reviewed-by: Sam Lang &lt;sam.lang@inktank.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Only include vxattrs in the result if they are not hidden and exist
(as determined by the exists_cb callback).

Note that the buffer size we return when 0 is passed in always includes
vxattrs that *might* exist, forming an upper bound.

Signed-off-by: Sage Weil &lt;sage@inktank.com&gt;
Reviewed-by: Sam Lang &lt;sam.lang@inktank.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ceph: fix getxattr vxattr handling</title>
<updated>2013-02-14T02:26:03+00:00</updated>
<author>
<name>Sage Weil</name>
<email>sage@inktank.com</email>
</author>
<published>2013-01-21T06:00:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=0bee82fb4b8d49541fe474ed460d2b917f329568'/>
<id>0bee82fb4b8d49541fe474ed460d2b917f329568</id>
<content type='text'>
Change the vxattr handling for getxattr so that vxattrs are checked
prior to any xattr content, and never after.  Enforce vxattr existence
via the exists_cb callback.

Signed-off-by: Sage Weil &lt;sage@inktank.com&gt;
Reviewed-by: Sam Lang &lt;sam.lang@inktank.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change the vxattr handling for getxattr so that vxattrs are checked
prior to any xattr content, and never after.  Enforce vxattr existence
via the exists_cb callback.

Signed-off-by: Sage Weil &lt;sage@inktank.com&gt;
Reviewed-by: Sam Lang &lt;sam.lang@inktank.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ceph: add exists_cb to vxattr struct</title>
<updated>2013-02-14T02:25:58+00:00</updated>
<author>
<name>Sage Weil</name>
<email>sage@inktank.com</email>
</author>
<published>2013-01-21T05:59:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=f36e4472969a78ae65e514b553e9a0feacb40a28'/>
<id>f36e4472969a78ae65e514b553e9a0feacb40a28</id>
<content type='text'>
Allow for a callback to dynamically determine if a vxattr exists for
the given inode.

Signed-off-by: Sage Weil &lt;sage@inktank.com&gt;
Reviewed-by: Sam Lang &lt;sam.lang@inktank.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Allow for a callback to dynamically determine if a vxattr exists for
the given inode.

Signed-off-by: Sage Weil &lt;sage@inktank.com&gt;
Reviewed-by: Sam Lang &lt;sam.lang@inktank.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ceph: pass ceph.* removexattrs through to MDS</title>
<updated>2013-02-14T02:25:55+00:00</updated>
<author>
<name>Sage Weil</name>
<email>sage@inktank.com</email>
</author>
<published>2013-01-21T05:55:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=d421acb1ad7dfa31b7463b67f1593714b0b727c3'/>
<id>d421acb1ad7dfa31b7463b67f1593714b0b727c3</id>
<content type='text'>
If we do not explicitly recognized a vxattr (e.g., as readonly), pass
the request through to the MDS and deal with it there.

Signed-off-by: Sage Weil &lt;sage@inktank.com&gt;
Reviewed-by: Sam Lang &lt;sam.lang@inktank.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If we do not explicitly recognized a vxattr (e.g., as readonly), pass
the request through to the MDS and deal with it there.

Signed-off-by: Sage Weil &lt;sage@inktank.com&gt;
Reviewed-by: Sam Lang &lt;sam.lang@inktank.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ceph: pass unhandled ceph.* setxattrs through to MDS</title>
<updated>2013-02-14T02:25:51+00:00</updated>
<author>
<name>Sage Weil</name>
<email>sage@inktank.com</email>
</author>
<published>2013-01-31T19:53:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=3adf654ddbc355c23d75c6684128d4b067a7b792'/>
<id>3adf654ddbc355c23d75c6684128d4b067a7b792</id>
<content type='text'>
If we do not specifically understand a setxattr on a ceph.* virtual
xattr, send it through to the MDS.  This allows us to implement new
functionality via the MDS without direct support on the client side.

Signed-off-by: Sage Weil &lt;sage@inktank.com&gt;
Reviewed-by: Sam Lang &lt;sam.lang@inktank.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If we do not specifically understand a setxattr on a ceph.* virtual
xattr, send it through to the MDS.  This allows us to implement new
functionality via the MDS without direct support on the client side.

Signed-off-by: Sage Weil &lt;sage@inktank.com&gt;
Reviewed-by: Sam Lang &lt;sam.lang@inktank.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
