[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <5002BFAE.9030408@gmail.com>
Date: Sun, 15 Jul 2012 21:03:42 +0800
From: Wang Sheng-Hui <shhuiw@...il.com>
To: Allison Henderson <achender@...ux.vnet.ibm.com>,
Lukas Czerner <lczerner@...hat.com>,
"Theodore Ts'o" <tytso@....edu>, linux-ext4@...r.kernel.org
Subject: Question about extents.c/ext4_ext_punch_hole
Dear all,
I'm reading the code of extents.c, and confused by the function "ext4_ext_punch_hole".
In my understanding, if we want to punch hole for the range (loff_t offset, loff_t length),
then we finally will get one hole block-size aligned, right?
[code in ext4_ext_punch_hole]
first_block = (offset + sb->s_blocksize - 1) >>
EXT4_BLOCK_SIZE_BITS(sb);
stop_block = (offset + length) >> EXT4_BLOCK_SIZE_BITS(sb);
[code]
>From the code, we'll get one hole range contained in the range [offset, length+offset-1].
For example, we set the block size to 1K, and we specify the range [offset:1000, offset:2000].
Then we'll get first_block:1,stop_block:2, with some head/tail range ignored.
{-23------|===========|----952---}
1000 1024 2048 2999
offset offset+length-1
'==='means punched hole here.
Please correct me if I'm wrong.
Regards,
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists