<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/fs/udf, branch v2.6.29</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>fs/Kconfig: move iso9660, udf out</title>
<updated>2009-01-22T10:15:55+00:00</updated>
<author>
<name>Alexey Dobriyan</name>
<email>adobriyan@gmail.com</email>
</author>
<published>2009-01-22T07:35:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=ddfaccd995b2d1bb1df4461ee9403ba9fdcbee04'/>
<id>ddfaccd995b2d1bb1df4461ee9403ba9fdcbee04</id>
<content type='text'>
Signed-off-by: Alexey Dobriyan &lt;adobriyan@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Alexey Dobriyan &lt;adobriyan@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'master' into next</title>
<updated>2008-12-04T06:16:36+00:00</updated>
<author>
<name>James Morris</name>
<email>jmorris@namei.org</email>
</author>
<published>2008-12-04T06:16:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=ec98ce480ada787f2cfbd696980ff3564415505b'/>
<id>ec98ce480ada787f2cfbd696980ff3564415505b</id>
<content type='text'>
Conflicts:
	fs/nfsd/nfs4recover.c

Manually fixed above to use new creds API functions, e.g.
nfs4_save_creds().

Signed-off-by: James Morris &lt;jmorris@namei.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Conflicts:
	fs/nfsd/nfs4recover.c

Manually fixed above to use new creds API functions, e.g.
nfs4_save_creds().

Signed-off-by: James Morris &lt;jmorris@namei.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>udf: Fix BUG_ON() in destroy_inode()</title>
<updated>2008-11-27T16:38:28+00:00</updated>
<author>
<name>Jan Kara</name>
<email>jack@suse.cz</email>
</author>
<published>2008-09-23T16:24:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=52b19ac993f1aeadbce15b55302be9a35346e235'/>
<id>52b19ac993f1aeadbce15b55302be9a35346e235</id>
<content type='text'>
udf_clear_inode() can leave behind buffers on mapping's i_private list (when
we truncated preallocation). Call invalidate_inode_buffers() so that the list
is properly cleaned-up before we return from udf_clear_inode(). This is ugly
and suggest that we should cleanup preallocation earlier than in clear_inode()
but currently there's no such call available since drop_inode() is called under
inode lock and thus is unusable for disk operations.

Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
udf_clear_inode() can leave behind buffers on mapping's i_private list (when
we truncated preallocation). Call invalidate_inode_buffers() so that the list
is properly cleaned-up before we return from udf_clear_inode(). This is ugly
and suggest that we should cleanup preallocation earlier than in clear_inode()
but currently there's no such call available since drop_inode() is called under
inode lock and thus is unusable for disk operations.

Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>CRED: Wrap task credential accesses in the UDF filesystem</title>
<updated>2008-11-13T23:39:03+00:00</updated>
<author>
<name>David Howells</name>
<email>dhowells@redhat.com</email>
</author>
<published>2008-11-13T23:39:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=7706bb39adff18a48ff98f203ffcbb00878d8589'/>
<id>7706bb39adff18a48ff98f203ffcbb00878d8589</id>
<content type='text'>
Wrap access to task credentials so that they can be separated more easily from
the task_struct during the introduction of COW creds.

Change most current-&gt;(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id().

Change some task-&gt;e?[ug]id to task_e?[ug]id().  In some places it makes more
sense to use RCU directly rather than a convenient wrapper; these will be
addressed by later patches.

Signed-off-by: David Howells &lt;dhowells@redhat.com&gt;
Reviewed-by: James Morris &lt;jmorris@namei.org&gt;
Acked-by: Serge Hallyn &lt;serue@us.ibm.com&gt;
Acked-by: Jan Kara &lt;jack@suse.cz&gt;
Signed-off-by: James Morris &lt;jmorris@namei.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Wrap access to task credentials so that they can be separated more easily from
the task_struct during the introduction of COW creds.

Change most current-&gt;(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id().

Change some task-&gt;e?[ug]id to task_e?[ug]id().  In some places it makes more
sense to use RCU directly rather than a convenient wrapper; these will be
addressed by later patches.

Signed-off-by: David Howells &lt;dhowells@redhat.com&gt;
Reviewed-by: James Morris &lt;jmorris@namei.org&gt;
Acked-by: Serge Hallyn &lt;serue@us.ibm.com&gt;
Acked-by: Jan Kara &lt;jack@suse.cz&gt;
Signed-off-by: James Morris &lt;jmorris@namei.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[PATCH] get rid of on-stack dentry in udf</title>
<updated>2008-10-23T09:13:15+00:00</updated>
<author>
<name>Al Viro</name>
<email>viro@zeniv.linux.org.uk</email>
</author>
<published>2008-10-12T04:15:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=9fbb76ce0fe96c07c44ba2aec3dc99f4b8d2b9c6'/>
<id>9fbb76ce0fe96c07c44ba2aec3dc99f4b8d2b9c6</id>
<content type='text'>
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[PATCH] switch all filesystems over to d_obtain_alias</title>
<updated>2008-10-23T09:13:01+00:00</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@lst.de</email>
</author>
<published>2008-08-11T13:49:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=440037287c5ebb07033ab927ca16bb68c291d309'/>
<id>440037287c5ebb07033ab927ca16bb68c291d309</id>
<content type='text'>
Switch all users of d_alloc_anon to d_obtain_alias.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Switch all users of d_alloc_anon to d_obtain_alias.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>vfs: Use const for kernel parser table</title>
<updated>2008-10-13T17:10:37+00:00</updated>
<author>
<name>Steven Whitehouse</name>
<email>swhiteho@redhat.com</email>
</author>
<published>2008-10-13T09:46:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=a447c0932445f92ce6f4c1bd020f62c5097a7842'/>
<id>a447c0932445f92ce6f4c1bd020f62c5097a7842</id>
<content type='text'>
This is a much better version of a previous patch to make the parser
tables constant. Rather than changing the typedef, we put the "const" in
all the various places where its required, allowing the __initconst
exception for nfsroot which was the cause of the previous trouble.

This was posted for review some time ago and I believe its been in -mm
since then.

Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
Cc: Alexander Viro &lt;aviro@redhat.com&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is a much better version of a previous patch to make the parser
tables constant. Rather than changing the typedef, we put the "const" in
all the various places where its required, allowing the __initconst
exception for nfsroot which was the cause of the previous trouble.

This was posted for review some time ago and I believe its been in -mm
since then.

Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
Cc: Alexander Viro &lt;aviro@redhat.com&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>udf: add llseek method</title>
<updated>2008-09-08T18:31:04+00:00</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@lst.de</email>
</author>
<published>2008-09-08T17:44:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=5c89468c12899b84886cb47eec93f0c88e0f896a'/>
<id>5c89468c12899b84886cb47eec93f0c88e0f896a</id>
<content type='text'>
UDF currently doesn't set a llseek method for regular files, which
means it will fall back to default_llseek.  This means no one can seek
beyond 2 Gigabytes on udf, and that there's not protection vs
the i_size updates from writers.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
UDF currently doesn't set a llseek method for regular files, which
means it will fall back to default_llseek.  This means no one can seek
beyond 2 Gigabytes on udf, and that there's not protection vs
the i_size updates from writers.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>udf: Fix error paths in udf_new_inode()</title>
<updated>2008-08-19T09:05:05+00:00</updated>
<author>
<name>Jan Kara</name>
<email>jack@suse.cz</email>
</author>
<published>2008-08-18T11:44:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=97e1cfb08616987878f91a46cefdd7fc5fa3dba1'/>
<id>97e1cfb08616987878f91a46cefdd7fc5fa3dba1</id>
<content type='text'>
I case we failed to allocate memory for inode when creating it, we did not
properly free block already allocated for this inode. Move memory allocation
before the block allocation which fixes this issue (thanks for the idea go to
Ingo Oeser &lt;ioe-lkml@rameria.de&gt;). Also remove a few superfluous
initializations already done in udf_alloc_inode().

Reviewed-by: Ingo Oeser &lt;ioe-lkml@rameria.de&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I case we failed to allocate memory for inode when creating it, we did not
properly free block already allocated for this inode. Move memory allocation
before the block allocation which fixes this issue (thanks for the idea go to
Ingo Oeser &lt;ioe-lkml@rameria.de&gt;). Also remove a few superfluous
initializations already done in udf_alloc_inode().

Reviewed-by: Ingo Oeser &lt;ioe-lkml@rameria.de&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>udf: Fix lock inversion between iprune_mutex and alloc_mutex (v2)</title>
<updated>2008-08-19T09:04:36+00:00</updated>
<author>
<name>Jan Kara</name>
<email>jack@suse.cz</email>
</author>
<published>2008-08-18T11:40:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=db0badc58e948b810c7a75cfcc48845e2949ee37'/>
<id>db0badc58e948b810c7a75cfcc48845e2949ee37</id>
<content type='text'>
A memory allocation inside alloc_mutex must not recurse back into the
filesystem itself because that leads to lock inversion between iprune_mutex and
alloc_mutex (and thus to deadlocks - see traces below). alloc_mutex is actually
needed only to update allocation statistics in the superblock so we can drop it
before we start allocating memory for the inode.

tar           D ffff81015b9c8c90     0  6614   6612
 ffff8100d5a21a20 0000000000000086 0000000000000000 00000000ffff0000
 ffff81015b9c8c90 ffff81015b8f0cd0 ffff81015b9c8ee0 0000000000000000
 0000000000000003 0000000000000000 0000000000000000 0000000000000000
Call Trace:
 [&lt;ffffffff803c1d8a&gt;] __mutex_lock_slowpath+0x64/0x9b
 [&lt;ffffffff803c1bef&gt;] mutex_lock+0xa/0xb
 [&lt;ffffffff8027f8c2&gt;] shrink_icache_memory+0x38/0x200
 [&lt;ffffffff80257742&gt;] shrink_slab+0xe3/0x15b
 [&lt;ffffffff802579db&gt;] try_to_free_pages+0x221/0x30d
 [&lt;ffffffff8025657e&gt;] isolate_pages_global+0x0/0x31
 [&lt;ffffffff8025324b&gt;] __alloc_pages_internal+0x252/0x3ab
 [&lt;ffffffff8026b08b&gt;] cache_alloc_refill+0x22e/0x47b
 [&lt;ffffffff8026ae37&gt;] kmem_cache_alloc+0x3b/0x61
 [&lt;ffffffff8026b15b&gt;] cache_alloc_refill+0x2fe/0x47b
 [&lt;ffffffff8026b34e&gt;] __kmalloc+0x76/0x9c
 [&lt;ffffffffa00751f2&gt;] :udf:udf_new_inode+0x202/0x2e2
 [&lt;ffffffffa007ae5e&gt;] :udf:udf_create+0x2f/0x16d
 [&lt;ffffffffa0078f27&gt;] :udf:udf_lookup+0xa6/0xad
...
kswapd0       D ffff81015b9d9270     0   125      2
 ffff81015b903c28 0000000000000046 ffffffff8028cbb0 00000000fffffffb
 ffff81015b9d9270 ffff81015b8f0cd0 ffff81015b9d94c0 000000000271b490
 ffffe2000271b458 ffffe2000271b420 ffffe20002728dc8 ffffe20002728d90
Call Trace:
 [&lt;ffffffff8028cbb0&gt;] __set_page_dirty+0xeb/0xf5
 [&lt;ffffffff8025403a&gt;] get_dirty_limits+0x1d/0x22f
 [&lt;ffffffff803c1d8a&gt;] __mutex_lock_slowpath+0x64/0x9b
 [&lt;ffffffff803c1bef&gt;] mutex_lock+0xa/0xb
 [&lt;ffffffffa0073f58&gt;] :udf:udf_bitmap_free_blocks+0x47/0x1eb
 [&lt;ffffffffa007df31&gt;] :udf:udf_discard_prealloc+0xc6/0x172
 [&lt;ffffffffa007875a&gt;] :udf:udf_clear_inode+0x1e/0x48
 [&lt;ffffffff8027f121&gt;] clear_inode+0x6d/0xc4
 [&lt;ffffffff8027f7f2&gt;] dispose_list+0x56/0xee
 [&lt;ffffffff8027fa5a&gt;] shrink_icache_memory+0x1d0/0x200
 [&lt;ffffffff80257742&gt;] shrink_slab+0xe3/0x15b
 [&lt;ffffffff80257e93&gt;] kswapd+0x346/0x447
...

Reported-by: Tibor Tajti &lt;tibor.tajti@gmail.com&gt;
Reviewed-by: Ingo Oeser &lt;ioe-lkml@rameria.de&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A memory allocation inside alloc_mutex must not recurse back into the
filesystem itself because that leads to lock inversion between iprune_mutex and
alloc_mutex (and thus to deadlocks - see traces below). alloc_mutex is actually
needed only to update allocation statistics in the superblock so we can drop it
before we start allocating memory for the inode.

tar           D ffff81015b9c8c90     0  6614   6612
 ffff8100d5a21a20 0000000000000086 0000000000000000 00000000ffff0000
 ffff81015b9c8c90 ffff81015b8f0cd0 ffff81015b9c8ee0 0000000000000000
 0000000000000003 0000000000000000 0000000000000000 0000000000000000
Call Trace:
 [&lt;ffffffff803c1d8a&gt;] __mutex_lock_slowpath+0x64/0x9b
 [&lt;ffffffff803c1bef&gt;] mutex_lock+0xa/0xb
 [&lt;ffffffff8027f8c2&gt;] shrink_icache_memory+0x38/0x200
 [&lt;ffffffff80257742&gt;] shrink_slab+0xe3/0x15b
 [&lt;ffffffff802579db&gt;] try_to_free_pages+0x221/0x30d
 [&lt;ffffffff8025657e&gt;] isolate_pages_global+0x0/0x31
 [&lt;ffffffff8025324b&gt;] __alloc_pages_internal+0x252/0x3ab
 [&lt;ffffffff8026b08b&gt;] cache_alloc_refill+0x22e/0x47b
 [&lt;ffffffff8026ae37&gt;] kmem_cache_alloc+0x3b/0x61
 [&lt;ffffffff8026b15b&gt;] cache_alloc_refill+0x2fe/0x47b
 [&lt;ffffffff8026b34e&gt;] __kmalloc+0x76/0x9c
 [&lt;ffffffffa00751f2&gt;] :udf:udf_new_inode+0x202/0x2e2
 [&lt;ffffffffa007ae5e&gt;] :udf:udf_create+0x2f/0x16d
 [&lt;ffffffffa0078f27&gt;] :udf:udf_lookup+0xa6/0xad
...
kswapd0       D ffff81015b9d9270     0   125      2
 ffff81015b903c28 0000000000000046 ffffffff8028cbb0 00000000fffffffb
 ffff81015b9d9270 ffff81015b8f0cd0 ffff81015b9d94c0 000000000271b490
 ffffe2000271b458 ffffe2000271b420 ffffe20002728dc8 ffffe20002728d90
Call Trace:
 [&lt;ffffffff8028cbb0&gt;] __set_page_dirty+0xeb/0xf5
 [&lt;ffffffff8025403a&gt;] get_dirty_limits+0x1d/0x22f
 [&lt;ffffffff803c1d8a&gt;] __mutex_lock_slowpath+0x64/0x9b
 [&lt;ffffffff803c1bef&gt;] mutex_lock+0xa/0xb
 [&lt;ffffffffa0073f58&gt;] :udf:udf_bitmap_free_blocks+0x47/0x1eb
 [&lt;ffffffffa007df31&gt;] :udf:udf_discard_prealloc+0xc6/0x172
 [&lt;ffffffffa007875a&gt;] :udf:udf_clear_inode+0x1e/0x48
 [&lt;ffffffff8027f121&gt;] clear_inode+0x6d/0xc4
 [&lt;ffffffff8027f7f2&gt;] dispose_list+0x56/0xee
 [&lt;ffffffff8027fa5a&gt;] shrink_icache_memory+0x1d0/0x200
 [&lt;ffffffff80257742&gt;] shrink_slab+0xe3/0x15b
 [&lt;ffffffff80257e93&gt;] kswapd+0x346/0x447
...

Reported-by: Tibor Tajti &lt;tibor.tajti@gmail.com&gt;
Reviewed-by: Ingo Oeser &lt;ioe-lkml@rameria.de&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</pre>
</div>
</content>
</entry>
</feed>
