<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/fs/udf/ialloc.c, branch v2.6.30</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>udf: Don't write integrity descriptor too often</title>
<updated>2009-04-02T11:36:28+00:00</updated>
<author>
<name>Jan Kara</name>
<email>jack@suse.cz</email>
</author>
<published>2009-03-16T17:27:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=146bca72c7e6ba52de82a63b1fce7934dc103dbc'/>
<id>146bca72c7e6ba52de82a63b1fce7934dc103dbc</id>
<content type='text'>
We update information in logical volume integrity descriptor after each
allocation (as LVID contains free space, number of directories and files on
disk etc.). If the filesystem is on some phase change media, this leads to its
quick degradation as such media is able to handle only 10000 overwrites or so.
We solve the problem by writing new information into LVID only on umount,
remount-ro and sync. This solves the problem at the price of longer media
inconsistency (previously media became consistent after pdflush flushed dirty
LVID buffer) but that should be acceptable.

Report by and patch written in cooperation with
Rich Coe &lt;Richard.Coe@med.ge.com&gt;.

Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We update information in logical volume integrity descriptor after each
allocation (as LVID contains free space, number of directories and files on
disk etc.). If the filesystem is on some phase change media, this leads to its
quick degradation as such media is able to handle only 10000 overwrites or so.
We solve the problem by writing new information into LVID only on umount,
remount-ro and sync. This solves the problem at the price of longer media
inconsistency (previously media became consistent after pdflush flushed dirty
LVID buffer) but that should be acceptable.

Report by and patch written in cooperation with
Rich Coe &lt;Richard.Coe@med.ge.com&gt;.

Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix the udf code not to pass structs on stack where possible.</title>
<updated>2009-04-02T10:29:47+00:00</updated>
<author>
<name>Pekka Enberg</name>
<email>penberg@cs.helsinki.fi</email>
</author>
<published>2008-10-15T10:29:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=97e961fdbf32488b7386c9f1effa2bee97d47929'/>
<id>97e961fdbf32488b7386c9f1effa2bee97d47929</id>
<content type='text'>
Signed-off-by: Pekka Enberg &lt;penberg@cs.helsinki.fi&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Pekka Enberg &lt;penberg@cs.helsinki.fi&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>udf: Use lowercase names of quota functions</title>
<updated>2009-03-26T01:18:36+00:00</updated>
<author>
<name>Jan Kara</name>
<email>jack@suse.cz</email>
</author>
<published>2009-01-26T16:20:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=bacfb7c2e5d10f40f7adb23aeeffc824b839eaa8'/>
<id>bacfb7c2e5d10f40f7adb23aeeffc824b839eaa8</id>
<content type='text'>
Use lowercase names of quota functions instead of old uppercase ones.

Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Use lowercase names of quota functions instead of old uppercase ones.

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>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>
<entry>
<title>udf: replace all adds to little endians variables with le*_add_cpu</title>
<updated>2008-04-17T12:22:28+00:00</updated>
<author>
<name>marcin.slusarz@gmail.com</name>
<email>marcin.slusarz@gmail.com</email>
</author>
<published>2008-01-30T21:03:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=c2104fda5e6a6981e385b2d11c5c591ab06d82a2'/>
<id>c2104fda5e6a6981e385b2d11c5c591ab06d82a2</id>
<content type='text'>
replace all:
	little_endian_variable = cpu_to_leX(leX_to_cpu(little_endian_variable) +
	                                    expression_in_cpu_byteorder);
with:
	leX_add_cpu(&amp;little_endian_variable, expression_in_cpu_byteorder);
sparse didn't generate any new warning with this patch

Signed-off-by: Marcin Slusarz &lt;marcin.slusarz@gmail.com
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
replace all:
	little_endian_variable = cpu_to_leX(leX_to_cpu(little_endian_variable) +
	                                    expression_in_cpu_byteorder);
with:
	leX_add_cpu(&amp;little_endian_variable, expression_in_cpu_byteorder);
sparse didn't generate any new warning with this patch

Signed-off-by: Marcin Slusarz &lt;marcin.slusarz@gmail.com
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>udf: move headers out include/linux/</title>
<updated>2008-04-17T12:22:23+00:00</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@lst.de</email>
</author>
<published>2008-02-22T11:39:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=15aebd2866b21a568d8defec134bf29f9aea9088'/>
<id>15aebd2866b21a568d8defec134bf29f9aea9088</id>
<content type='text'>
There's really no reason to keep udf headers in include/linux as they're
not used by anything but fs/udf/.

This patch merges most of include/linux/udf_fs_i.h into fs/udf/udf_i.h,
include/linux/udf_fs_sb.h into fs/udf/udf_sb.h and
include/linux/udf_fs.h into fs/udf/udfdecl.h.

The only thing remaining in include/linux/ is a stub of udf_fs_i.h
defining the four user-visible udf ioctls.  It's also moved from
unifdef-y to headers-y because it can be included unconditionally now.

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>
There's really no reason to keep udf headers in include/linux as they're
not used by anything but fs/udf/.

This patch merges most of include/linux/udf_fs_i.h into fs/udf/udf_i.h,
include/linux/udf_fs_sb.h into fs/udf/udf_sb.h and
include/linux/udf_fs.h into fs/udf/udfdecl.h.

The only thing remaining in include/linux/ is a stub of udf_fs_i.h
defining the four user-visible udf ioctls.  It's also moved from
unifdef-y to headers-y because it can be included unconditionally now.

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: cache struct udf_inode_info</title>
<updated>2008-02-08T17:22:35+00:00</updated>
<author>
<name>Marcin Slusarz</name>
<email>marcin.slusarz@gmail.com</email>
</author>
<published>2008-02-08T12:20:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=48d6d8ff7dca804536298e517298182c4a51c421'/>
<id>48d6d8ff7dca804536298e517298182c4a51c421</id>
<content type='text'>
cache UDF_I(struct inode *) return values when there are
at least 2 uses in one function

Signed-off-by: Marcin Slusarz &lt;marcin.slusarz@gmail.com&gt;
Acked-by: Jan Kara &lt;jack@suse.cz&gt;
Cc: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&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>
cache UDF_I(struct inode *) return values when there are
at least 2 uses in one function

Signed-off-by: Marcin Slusarz &lt;marcin.slusarz@gmail.com&gt;
Acked-by: Jan Kara &lt;jack@suse.cz&gt;
Cc: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>udf: remove UDF_I_* macros and open code them</title>
<updated>2008-02-08T17:22:35+00:00</updated>
<author>
<name>Marcin Slusarz</name>
<email>marcin.slusarz@gmail.com</email>
</author>
<published>2008-02-08T12:20:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=c0b344385fa05f6bea462e707fcba89f9e2776c2'/>
<id>c0b344385fa05f6bea462e707fcba89f9e2776c2</id>
<content type='text'>
Signed-off-by: Marcin Slusarz &lt;marcin.slusarz@gmail.com&gt;
Acked-by: Jan Kara &lt;jack@suse.cz&gt;
Cc: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&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>
Signed-off-by: Marcin Slusarz &lt;marcin.slusarz@gmail.com&gt;
Acked-by: Jan Kara &lt;jack@suse.cz&gt;
Cc: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
