linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mingming Cao <cmm@us.ibm.com>
To: suparna@in.ibm.com
Cc: Andrew Morton <akpm@osdl.org>,
	"Stephen C. Tweedie" <sct@redhat.com>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	ext2-devel <ext2-devel@lists.sourceforge.net>,
	linux-fsdevel@vger.kernel.org
Subject: Re: [Ext2-devel] [RFC] Adding multiple block allocation
Date: Fri, 29 Apr 2005 12:42:44 -0700	[thread overview]
Message-ID: <1114803764.10473.46.camel@localhost.localdomain> (raw)
In-Reply-To: <1114794608.10473.18.camel@localhost.localdomain>

On Fri, 2005-04-29 at 10:10 -0700, Mingming Cao wrote:
> But if it try to allocating blocks in the hole (with direct IO), blocks
> are allocated one by one. I am looking at it right now.
> 
Hi Andrew, Badari,

If we do direct write(block allocation) to a hole, I found that the
"create" flag passed to ext3_direct_io_get_blocks() is 0 if we are
trying to _write_ to a file hole. Is this expected? 

This is what happened on mainline 2.6.12-rc2(and with my patch). To simplify, here is the problem description on mainline:

If we do 30 blocks write to a new file at offset 800k, fine, create flag is all 1. 
Then if seek back to offset 400k, write another 30 blocks, create flag is 0

-bash-2.05b# mount -t ext3 /dev/ubdc /mnt/ext3
-bash-2.05b# cd /mnt/ext3
-bash-2.05b# touch a
-bash-2.05b# /root/filetst -o 819200 -b 122880 -c 1 -w -d -f a
Calling ext3_get_block_handle from ext3_direct_io_get_blocks: maxblocks = 30, iblock = 200, create = 1
Calling ext3_get_block_handle from ext3_direct_io_get_blocks: maxblocks = 29, iblock = 201, create = 1
Calling ext3_get_block_handle from ext3_direct_io_get_blocks: maxblocks = 28, iblock = 202, create = 1
Calling ext3_get_block_handle from ext3_direct_io_get_blocks: maxblocks = 27, iblock = 203, create = 1
Calling ext3_get_block_handle from ext3_direct_io_get_blocks: maxblocks = 26, iblock = 204, create = 1
...................
Calling ext3_get_block_handle from ext3_direct_io_get_blocks: maxblocks = 5, iblock = 225, create = 1
Calling ext3_get_block_handle from ext3_direct_io_get_blocks: maxblocks = 4, iblock = 226, create = 1
Calling ext3_get_block_handle from ext3_direct_io_get_blocks: maxblocks = 3, iblock = 227, create = 1
Calling ext3_get_block_handle from ext3_direct_io_get_blocks: maxblocks = 2, iblock = 228, create = 1
Calling ext3_get_block_handle from ext3_direct_io_get_blocks: maxblocks = 1, iblock = 229, create = 1

-bash-2.05b# /root/filetst -o 409600 -b 122880 -c 1 -w -d -f a
Calling ext3_get_block_handle from ext3_direct_io_get_blocks: maxblocks = 30, iblock = 100, create = 0


Because of create flag is 0, ext3_get_block will not do block allocation
and return immediately after look up failed. Then ext3_get_block_handle
() is called from other path(I am not sure where) other than
ext3_direct_io_get_blocks to allocate the desired 30 blocks.(thus, when
apply ext3_get_blocks patch, ext3_get_blocks is not called)

Could you clarify?

Thanks,
Mingming


  reply	other threads:[~2005-04-29 19:42 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1113220089.2164.52.camel@sisko.sctweedie.blueyonder.co.uk>
     [not found] ` <1113244710.4413.38.camel@localhost.localdomain>
     [not found]   ` <1113249435.2164.198.camel@sisko.sctweedie.blueyonder.co.uk>
     [not found]     ` <1113288087.4319.49.camel@localhost.localdomain>
     [not found]       ` <1113304715.2404.39.camel@sisko.sctweedie.blueyonder.co.uk>
     [not found]         ` <1113348434.4125.54.camel@dyn318043bld.beaverton.ibm.com>
     [not found]           ` <1113388142.3019.12.camel@sisko.sctweedie.blueyonder.co.uk>
     [not found]             ` <1114207837.7339.50.camel@localhost.localdomain>
     [not found]               ` <1114659912.16933.5.camel@mindpipe>
     [not found]                 ` <1114715665.18996.29.camel@localhost.localdomain>
2005-04-29 13:52                   ` [Ext2-devel] [RFC] Adding multiple block allocation Suparna Bhattacharya
2005-04-29 17:10                     ` Mingming Cao
2005-04-29 19:42                       ` Mingming Cao [this message]
2005-04-29 20:57                         ` Andrew Morton
2005-04-29 21:12                           ` Mingming Cao
2005-04-29 21:34                             ` Andrew Morton
2005-04-30 16:00                       ` [Ext2-devel] " Suparna Bhattacharya
2005-04-29 18:45                     ` Badari Pulavarty
2005-04-29 23:22                       ` Mingming Cao
2005-04-30 16:10                         ` Suparna Bhattacharya
2005-04-30 17:11                           ` [Ext2-devel] " Suparna Bhattacharya
2005-04-30 18:07                             ` Mingming Cao
2005-05-02  4:46                               ` Suparna Bhattacharya
2005-04-30 16:52                       ` Suparna Bhattacharya
2005-04-30  0:33                     ` Mingming Cao
2005-04-30  0:44                     ` Mingming Cao
2005-04-30 17:03                       ` [Ext2-devel] " Suparna Bhattacharya

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1114803764.10473.46.camel@localhost.localdomain \
    --to=cmm@us.ibm.com \
    --cc=akpm@osdl.org \
    --cc=ext2-devel@lists.sourceforge.net \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sct@redhat.com \
    --cc=suparna@in.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).