<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/fs/udf/ialloc.c, branch v2.6.34</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>dquot: cleanup dquot initialize routine</title>
<updated>2010-03-04T23:20:30+00:00</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@infradead.org</email>
</author>
<published>2010-03-03T14:05:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=871a293155a24554e153538d36e3a80fa169aefb'/>
<id>871a293155a24554e153538d36e3a80fa169aefb</id>
<content type='text'>
Get rid of the initialize dquot operation - it is now always called from
the filesystem and if a filesystem really needs it's own (which none
currently does) it can just call into it's own routine directly.

Rename the now static low-level dquot_initialize helper to __dquot_initialize
and vfs_dq_init to dquot_initialize to have a consistent namespace.

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>
Get rid of the initialize dquot operation - it is now always called from
the filesystem and if a filesystem really needs it's own (which none
currently does) it can just call into it's own routine directly.

Rename the now static low-level dquot_initialize helper to __dquot_initialize
and vfs_dq_init to dquot_initialize to have a consistent namespace.

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>dquot: cleanup dquot drop routine</title>
<updated>2010-03-04T23:20:30+00:00</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@infradead.org</email>
</author>
<published>2010-03-03T14:05:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=9f7547580263d4a55efe06ce5cfd567f568be6e8'/>
<id>9f7547580263d4a55efe06ce5cfd567f568be6e8</id>
<content type='text'>
Get rid of the drop dquot operation - it is now always called from
the filesystem and if a filesystem really needs it's own (which none
currently does) it can just call into it's own routine directly.

Rename the now static low-level dquot_drop helper to __dquot_drop
and vfs_dq_drop to dquot_drop to have a consistent namespace.

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>
Get rid of the drop dquot operation - it is now always called from
the filesystem and if a filesystem really needs it's own (which none
currently does) it can just call into it's own routine directly.

Rename the now static low-level dquot_drop helper to __dquot_drop
and vfs_dq_drop to dquot_drop to have a consistent namespace.

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>dquot: cleanup inode allocation / freeing routines</title>
<updated>2010-03-04T23:20:28+00:00</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@infradead.org</email>
</author>
<published>2010-03-03T14:05:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=63936ddaa16b9486e2d426ed7b09f559a5c60f87'/>
<id>63936ddaa16b9486e2d426ed7b09f559a5c60f87</id>
<content type='text'>
Get rid of the alloc_inode and free_inode dquot operations - they are
always called from the filesystem and if a filesystem really needs
their own (which none currently does) it can just call into it's
own routine directly.

Also get rid of the vfs_dq_alloc/vfs_dq_free wrappers and always
call the lowlevel dquot_alloc_inode / dqout_free_inode routines
directly, which now lose the number argument which is always 1.

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>
Get rid of the alloc_inode and free_inode dquot operations - they are
always called from the filesystem and if a filesystem really needs
their own (which none currently does) it can just call into it's
own routine directly.

Also get rid of the vfs_dq_alloc/vfs_dq_free wrappers and always
call the lowlevel dquot_alloc_inode / dqout_free_inode routines
directly, which now lose the number argument which is always 1.

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: 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>
</feed>
