Message ID | 1367037053-1893-1-git-send-email-ashish.sangwan2@gmail.com |
---|---|
State | New, archived |
Headers | show |
On Sat, Apr 27, 2013 at 10:00:53AM +0530, Ashish Sangwan wrote: > From: Ashish Sangwan <a.sangwan@samsung.com> > > During punch hole, before removing extents we make sure that the blocks > are commited to disk by calling filemap_write_and_wait_range. So, the > extents cannot be present on extent status tree. > > Signed-off-by: Ashish Sangwan <a.sangwan@samsung.com> > Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com> Hi Ashish, I guess that this patch is against mainline kernel, right? The commit log is right before we use extent status tree to track all extent information. In dev branch of ext4 tree, we track all extent status in status tree. So we need to remove extent from status tree in punch hole. Thanks, - Zheng > --- > fs/ext4/inode.c | 7 ------- > 1 files changed, 0 insertions(+), 7 deletions(-) > > diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c > index 50cced9..944eb15 100644 > --- a/fs/ext4/inode.c > +++ b/fs/ext4/inode.c > @@ -3749,13 +3749,6 @@ int ext4_punch_hole(struct file *file, loff_t offset, loff_t length) > down_write(&EXT4_I(inode)->i_data_sem); > ext4_discard_preallocations(inode); > > - ret = ext4_es_remove_extent(inode, first_block, > - stop_block - first_block); > - if (ret) { > - up_write(&EXT4_I(inode)->i_data_sem); > - goto out_stop; > - } > - > if (ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS)) > ret = ext4_ext_remove_space(inode, first_block, > stop_block - 1); > -- > 1.7.8.4 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-ext4" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Sat, Apr 27, 2013 at 10:58 AM, Zheng Liu <gnehzuil.liu@gmail.com> wrote: > On Sat, Apr 27, 2013 at 10:00:53AM +0530, Ashish Sangwan wrote: >> From: Ashish Sangwan <a.sangwan@samsung.com> >> >> During punch hole, before removing extents we make sure that the blocks >> are commited to disk by calling filemap_write_and_wait_range. So, the >> extents cannot be present on extent status tree. >> >> Signed-off-by: Ashish Sangwan <a.sangwan@samsung.com> >> Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com> > > Hi Ashish, > > I guess that this patch is against mainline kernel, right? True >The commit > log is right before we use extent status tree to track all extent > information. In dev branch of ext4 tree, we track all extent status in > status tree. So we need to remove extent from status tree in punch > hole. I was of the opinion that filemap_write_and_wait_range will remove the extent from status tree if its still there. ok, I will check the dev branch. Thanks, Ashish > > Thanks, > - Zheng > >> --- >> fs/ext4/inode.c | 7 ------- >> 1 files changed, 0 insertions(+), 7 deletions(-) >> >> diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c >> index 50cced9..944eb15 100644 >> --- a/fs/ext4/inode.c >> +++ b/fs/ext4/inode.c >> @@ -3749,13 +3749,6 @@ int ext4_punch_hole(struct file *file, loff_t offset, loff_t length) >> down_write(&EXT4_I(inode)->i_data_sem); >> ext4_discard_preallocations(inode); >> >> - ret = ext4_es_remove_extent(inode, first_block, >> - stop_block - first_block); >> - if (ret) { >> - up_write(&EXT4_I(inode)->i_data_sem); >> - goto out_stop; >> - } >> - >> if (ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS)) >> ret = ext4_ext_remove_space(inode, first_block, >> stop_block - 1); >> -- >> 1.7.8.4 >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Sat, Apr 27, 2013 at 12:20:22PM +0530, Ashish Sangwan wrote: > >The commit > > log is right before we use extent status tree to track all extent > > information. In dev branch of ext4 tree, we track all extent status in > > status tree. So we need to remove extent from status tree in punch > > hole. > I was of the opinion that filemap_write_and_wait_range will remove the > extent from status tree if its still there. > ok, I will check the dev branch. Ah, please bear with me. In mainline kernel 3.9-rcX, we have used status tree to track all extent status. You could also check 3.9-rcX kernel. Please let me know if I miss something. Thanks, - Zheng -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Sat, Apr 27, 2013 at 12:41 PM, Zheng Liu <gnehzuil.liu@gmail.com> wrote: > On Sat, Apr 27, 2013 at 12:20:22PM +0530, Ashish Sangwan wrote: >> >The commit >> > log is right before we use extent status tree to track all extent >> > information. In dev branch of ext4 tree, we track all extent status in >> > status tree. So we need to remove extent from status tree in punch >> > hole. >> I was of the opinion that filemap_write_and_wait_range will remove the >> extent from status tree if its still there. >> ok, I will check the dev branch. > > Ah, please bear with me. In mainline kernel 3.9-rcX, we have used > status tree to track all extent status. You could also check 3.9-rcX > kernel. Please let me know if I miss something. Hi Zheng, Ok, I understood your point. Currently, after step 2 of extent status tree, it houses _all_ the extents and not just delayed extents. This patch is not required now. Regards, Ashish > > Thanks, > - Zheng -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 50cced9..944eb15 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -3749,13 +3749,6 @@ int ext4_punch_hole(struct file *file, loff_t offset, loff_t length) down_write(&EXT4_I(inode)->i_data_sem); ext4_discard_preallocations(inode); - ret = ext4_es_remove_extent(inode, first_block, - stop_block - first_block); - if (ret) { - up_write(&EXT4_I(inode)->i_data_sem); - goto out_stop; - } - if (ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS)) ret = ext4_ext_remove_space(inode, first_block, stop_block - 1);