* [PATCH v3] f2fs: fix to data block override node segment by mistake
@ 2019-02-25 11:49 zhengliang
2019-02-26 17:48 ` Jaegeuk Kim
0 siblings, 1 reply; 3+ messages in thread
From: zhengliang @ 2019-02-25 11:49 UTC (permalink / raw)
To: jaegeuk, yuchao0, linux-f2fs-devel
v2->v3: It describe the problem scenario more accurately.
TASK A TASK kworker TASK B TASK C
open
write
close
f2fs_write_data_pages
f2fs_write_cache_pages
f2fs_outplace_write_data
f2fs_allocate_data_block (get block in seg S,
S is full, and only
have this valid data
block)
allocate_segment
locate_dirty_segment (mark S as PRE)
f2fs_submit_page_write (submit but is not
written on dev)
unlink
iput_final
f2fs_drop_inode
f2fs_truncate
(not evict)
write_checkpoint
flush merged bio but not wait file data writeback
set_prefree_as_free (mark S as FREE)
update NODE/DATA
allocate_segment (select S)
writeback done
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v3] f2fs: fix to data block override node segment by mistake
2019-02-25 11:49 [PATCH v3] f2fs: fix to data block override node segment by mistake zhengliang
@ 2019-02-26 17:48 ` Jaegeuk Kim
2019-02-27 8:07 ` zhengliang
0 siblings, 1 reply; 3+ messages in thread
From: Jaegeuk Kim @ 2019-02-26 17:48 UTC (permalink / raw)
To: zhengliang; +Cc: linux-f2fs-devel
On 02/25, zhengliang wrote:
> v2->v3: It describe the problem scenario more accurately.
>
> TASK A TASK kworker TASK B TASK C
>
> open
> write
> close
> f2fs_write_data_pages
> f2fs_write_cache_pages
> f2fs_outplace_write_data
> f2fs_allocate_data_block (get block in seg S,
> S is full, and only
> have this valid data
> block)
> allocate_segment
> locate_dirty_segment (mark S as PRE)
> f2fs_submit_page_write (submit but is not
> written on dev)
> unlink
> iput_final
> f2fs_drop_inode
> f2fs_truncate
> (not evict)
> write_checkpoint
> flush merged bio but not wait file data writeback
> set_prefree_as_free (mark S as FREE)
> update NODE/DATA
> allocate_segment (select S)
> writeback done
Patch was broken?
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v3] f2fs: fix to data block override node segment by mistake
2019-02-26 17:48 ` Jaegeuk Kim
@ 2019-02-27 8:07 ` zhengliang
0 siblings, 0 replies; 3+ messages in thread
From: zhengliang @ 2019-02-27 8:07 UTC (permalink / raw)
To: Jaegeuk Kim, yuchao0, linux-f2fs-devel
I'm very sorry I forget to attach the patch in v3.
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Zheng Liang <zhengliang6@huawei.com>
--------
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index c46a1d43..60f0599 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -915,6 +915,10 @@ static int f2fs_drop_inode(struct inode *inode)
sb_start_intwrite(inode->i_sb);
f2fs_i_size_write(inode, 0);
+ f2fs_submit_merged_write_cond(F2FS_I_SB(inode),
+ inode, NULL, 0, DATA);
+ truncate_inode_pages_final(inode->i_mapping);
+
if (F2FS_HAS_BLOCKS(inode))
f2fs_truncate(inode);
在 2019/2/27 1:48, Jaegeuk Kim 写道:
> On 02/25, zhengliang wrote:
>> v2->v3: It describe the problem scenario more accurately.
>>
>> TASK A TASK kworker TASK B TASK C
>>
>> open
>> write
>> close
>> f2fs_write_data_pages
>> f2fs_write_cache_pages
>> f2fs_outplace_write_data
>> f2fs_allocate_data_block (get block in seg S,
>> S is full, and only
>> have this valid data
>> block)
>> allocate_segment
>> locate_dirty_segment (mark S as PRE)
>> f2fs_submit_page_write (submit but is not
>> written on dev)
>> unlink
>> iput_final
>> f2fs_drop_inode
>> f2fs_truncate
>> (not evict)
>> write_checkpoint
>> flush merged bio but not wait file data writeback
>> set_prefree_as_free (mark S as FREE)
>> update NODE/DATA
>> allocate_segment (select S)
>> writeback done
>
> Patch was broken?
>
> .
>
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2019-02-27 8:09 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-02-25 11:49 [PATCH v3] f2fs: fix to data block override node segment by mistake zhengliang
2019-02-26 17:48 ` Jaegeuk Kim
2019-02-27 8:07 ` zhengliang
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).