<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/ext3/inode.c, branch linux-2.6.20.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.20.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.20.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2007-04-13T20:47:18Z</updated>
<entry>
<title>revert "retries in ext3_prepare_write() violate ordering requirements"</title>
<updated>2007-04-13T20:47:18Z</updated>
<author>
<name>Andrew Morton</name>
</author>
<published>2007-04-02T06:49:43Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5dc1802f745ba8a665d667f676f1eb21df432a41'/>
<id>urn:sha1:5dc1802f745ba8a665d667f676f1eb21df432a41</id>
<content type='text'>
Revert e92a4d595b464c4aae64be39ca61a9ffe9c8b278.

Dmitry points out

"When we block_prepare_write() failed while ext3_prepare_write() we jump to
 "failure" label and call ext3_prepare_failure() witch search last mapped bh
 and invoke commit_write untill it.  This is wrong!!  because some bh from
 begining to the last mapped bh may be not uptodate.  As a result we commit to
 disk not uptodate page content witch contains garbage from previous usage."

and

"Unexpected file size increasing."

   Call trace the same as it was in first issue but result is different. 
   For example we have file with i_size is zero.  we want write two blocks ,
   but fs has only one free block.

   -&gt;ext3_prepare_write(...from == 0, to == 2048)
     retry:
     -&gt;block_prepare_write() == -ENOSPC# we failed but allocated one block here.
     -&gt;ext3_prepare_failure()
       -&gt;commit_write( from == 0, to == 1024) # after this i_size becomes 1024 :)
     if (ret == -ENOSPC &amp;&amp; ext3_should_retry_alloc(inode-&gt;i_sb, &amp;retries))
        goto retry;

   Finally when all retries will be spended ext3_prepare_failure return
   -ENOSPC, but i_size was increased and later block trimm procedures can't
   help here.

We don't appear to have the horsepower to fix these issues, so let's put
things back the way they were for now.

Cc: Kirill Korotaev &lt;dev@openvz.org&gt;
Cc: Ingo Molnar &lt;mingo@elte.hu&gt;
Cc: Ken Chen &lt;kenneth.w.chen@intel.com&gt;
Cc: Andrey Savochkin &lt;saw@sw.ru&gt;
Cc: &lt;linux-ext4@vger.kernel.org&gt;
Cc: Dmitriy Monakhov &lt;dmonakhov@openvz.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;


</content>
</entry>
<entry>
<title>[PATCH] retries in ext3_prepare_write() violate ordering requirements</title>
<updated>2006-12-07T16:39:37Z</updated>
<author>
<name>Andrey Savochkin</name>
</author>
<published>2006-12-07T04:37:34Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e92a4d595b464c4aae64be39ca61a9ffe9c8b278'/>
<id>urn:sha1:e92a4d595b464c4aae64be39ca61a9ffe9c8b278</id>
<content type='text'>
In journal=ordered or journal=data mode retry in ext3_prepare_write()
breaks the requirements of journaling of data with respect to metadata.
The fix is to call commit_write to commit allocated zero blocks before
retry.

Signed-off-by: Kirill Korotaev &lt;dev@openvz.org&gt;
Cc: Ingo Molnar &lt;mingo@elte.hu&gt;
Cc: Ken Chen &lt;kenneth.w.chen@intel.com&gt;
Cc: &lt;linux-ext4@vger.kernel.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] ext3: make meta data reads use READ_META</title>
<updated>2006-09-30T18:29:42Z</updated>
<author>
<name>Jens Axboe</name>
</author>
<published>2006-07-22T23:41:26Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=caa38fb0f481a3cb732b115cb59bfa6b59b6daaf'/>
<id>urn:sha1:caa38fb0f481a3cb732b115cb59bfa6b59b6daaf</id>
<content type='text'>
Signed-off-by: Jens Axboe &lt;axboe@suse.de&gt;
</content>
</entry>
<entry>
<title>[PATCH] inode-diet: Eliminate i_blksize from the inode structure</title>
<updated>2006-09-27T15:26:18Z</updated>
<author>
<name>Theodore Ts'o</name>
</author>
<published>2006-09-27T08:50:49Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ba52de123d454b57369f291348266d86f4b35070'/>
<id>urn:sha1:ba52de123d454b57369f291348266d86f4b35070</id>
<content type='text'>
This eliminates the i_blksize field from struct inode.  Filesystems that want
to provide a per-inode st_blksize can do so by providing their own getattr
routine instead of using the generic_fillattr() function.

Note that some filesystems were providing pretty much random (and incorrect)
values for i_blksize.

[bunk@stusta.de: cleanup]
[akpm@osdl.org: generic_fillattr() fix]
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Signed-off-by: Adrian Bunk &lt;bunk@stusta.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] ext3: More whitespace cleanups</title>
<updated>2006-09-27T15:26:10Z</updated>
<author>
<name>Dave Kleikamp</name>
</author>
<published>2006-09-27T08:49:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e9ad5620bfb901df8a7a2603c88689ededeecaf1'/>
<id>urn:sha1:e9ad5620bfb901df8a7a2603c88689ededeecaf1</id>
<content type='text'>
More white space cleanups in preparation of cloning ext4 from ext3.
Removing spaces that precede a tab.

Signed-off-by: Dave Kleikamp &lt;shaggy@austin.ibm.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] ext3: inode numbers are unsigned long</title>
<updated>2006-09-27T15:26:09Z</updated>
<author>
<name>Eric Sandeen</name>
</author>
<published>2006-09-27T08:49:30Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=eee194e76c681dbdbf5024b889fda1181b66ef57'/>
<id>urn:sha1:eee194e76c681dbdbf5024b889fda1181b66ef57</id>
<content type='text'>
This is primarily format string fixes, with changes to ialloc.c where large
inode counts could overflow, and also pass around journal_inum as an
unsigned long, just to be pedantic about it....

Signed-off-by: Eric Sandeen &lt;esandeen@redhat.com&gt;
Cc: Mingming Cao &lt;cmm@us.ibm.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] ext3 and jbd cleanup: remove whitespace</title>
<updated>2006-09-27T15:26:09Z</updated>
<author>
<name>Mingming Cao</name>
</author>
<published>2006-09-27T08:49:27Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ae6ddcc5f24d6b06ae9231dc128904750a4155e0'/>
<id>urn:sha1:ae6ddcc5f24d6b06ae9231dc128904750a4155e0</id>
<content type='text'>
Remove whitespace from ext3 and jbd, before we clone ext4.

Signed-off-by: Mingming Cao&lt;cmm@us.ibm.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] ext3 sequential read regression fix</title>
<updated>2006-09-16T19:54:32Z</updated>
<author>
<name>Suparna Bhattacharya</name>
</author>
<published>2006-09-16T19:15:58Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=20acaa18d0c002fec180956f87adeb3f11f635a6'/>
<id>urn:sha1:20acaa18d0c002fec180956f87adeb3f11f635a6</id>
<content type='text'>
ext3-get-blocks support caused ~20% degrade in Sequential read
performance (tiobench). Problem is with marking the buffer boundary
so IO can be submitted right away. Here is the patch to fix it.

  2.6.18-rc6:
  -----------
  # ./iotest
  1048576+0 records in
  1048576+0 records out
  4294967296 bytes (4.3 GB) copied, 75.2726 seconds, 57.1 MB/s

  real    1m15.285s
  user    0m0.276s
  sys     0m3.884s

  2.6.18-rc6 + fix:
  -----------------
  [root@elm3a241 ~]# ./iotest
  1048576+0 records in
  1048576+0 records out
  4294967296 bytes (4.3 GB) copied, 62.9356 seconds, 68.2 MB/s

The boundary block check in ext3_get_blocks_handle needs to be adjusted
against the count of blocks mapped in this call, now that it can map
more than one block.

Signed-off-by: Suparna Bhattacharya &lt;suparna@in.ibm.com&gt;
Tested-by: Badari Pulavarty &lt;pbadari@us.ibm.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] ext3_getblk() should handle HOLE correctly</title>
<updated>2006-09-08T17:22:50Z</updated>
<author>
<name>Badari Pulavarty</name>
</author>
<published>2006-09-08T16:48:21Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3665d0e58fa44f50c744f85c7e8ad21d5b10e206'/>
<id>urn:sha1:3665d0e58fa44f50c744f85c7e8ad21d5b10e206</id>
<content type='text'>
It has been reported that ext3_getblk() is not doing the right thing and
triggering following WARN():

BUG: warning at fs/ext3/inode.c:1016/ext3_getblk()
 &lt;c01c5140&gt; ext3_getblk+0x98/0x2a6  &lt;c03b2806&gt; md_wakeup_thread+0x26/0x2a
 &lt;c01c536d&gt; ext3_bread+0x1f/0x88  &lt;c01cedf9&gt; ext3_quota_read+0x136/0x1ae
 &lt;c018b683&gt; v1_read_dqblk+0x61/0xac  &lt;c0188f32&gt; dquot_acquire+0xf6/0x107
 &lt;c01ceaba&gt; ext3_acquire_dquot+0x46/0x68  &lt;c01897d4&gt; dqget+0x155/0x1e7
 &lt;c018a97b&gt; dquot_transfer+0x3e0/0x3e9  &lt;c016fe52&gt; dput+0x23/0x13e
 &lt;c01c7986&gt; ext3_setattr+0xc3/0x240  &lt;c0120f66&gt; current_fs_time+0x52/0x6a
 &lt;c017320e&gt; notify_change+0x2bd/0x30d  &lt;c0159246&gt; chown_common+0x9c/0xc5
 &lt;c02a222c&gt; strncpy_from_user+0x3b/0x68  &lt;c0167fe6&gt; do_path_lookup+0xdf/0x266
 &lt;c016841b&gt; __user_walk_fd+0x44/0x5a  &lt;c01592b9&gt; sys_chown+0x4a/0x55
 &lt;c015a43c&gt; vfs_write+0xe7/0x13c  &lt;c01695d4&gt; sys_mkdir+0x1f/0x23
 &lt;c0102a97&gt; syscall_call+0x7/0xb

Looking at the code, it looks like it's not handle HOLE correctly.  It ends
up returning -EIO.  Here is the patch to fix it.

If we really want to be paranoid, we can allow return values 0 (HOLE), 1
(we asked for one block) and return -EIO for more than 1 block.  But I
really don't see a reason for doing it - all we need is the block# here.
(doesn't matter how many blocks are mapped).

ext3_get_blocks_handle() returns number of blocks it mapped.  It returns 0
in case of HOLE.  ext3_getblk() should handle HOLE properly (currently its
dumping warning stack and returning -EIO).

Signed-off-by: Badari Pulavarty &lt;pbadari@us.ibm.com&gt;
Acked-by: Mingming Cao &lt;cmm@us.ibm.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] ext3 -nobh option causes oops</title>
<updated>2006-07-31T20:28:44Z</updated>
<author>
<name>Badari Pulavarty</name>
</author>
<published>2006-07-30T10:04:14Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0e31f51d8177320d61ec5786ca4aafa7b7a749b4'/>
<id>urn:sha1:0e31f51d8177320d61ec5786ca4aafa7b7a749b4</id>
<content type='text'>
For files other than IFREG, nobh option doesn't make sense.  Modifications
to them are journalled and needs buffer heads to do that.  Without this
patch, we get kernel oops in page_buffers().

Signed-off-by: Badari Pulavarty &lt;pbadari@us.ibm.com&gt;
Cc: &lt;stable@kernel.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
</feed>
