linux-f2fs-devel.lists.sourceforge.net archive mirror
 help / color / mirror / Atom feed
* [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).