• Chao Yu's avatar
    Revert "f2fs: move i_size_write in f2fs_write_end" · 3024c9a1
    Chao Yu authored
    This reverts commit a2ee0a30.
    
    When testing with generic/032 of xfstest suit, failure message will be
    reported as below:
    
    generic/032 8s ... [failed, exit status 1] - output mismatch (see results/generic/032.out.bad)
        --- tests/generic/032.out	2015-01-11 16:52:27.643681072 +0800
        +++ results/generic/032.out.bad	2016-08-06 13:44:43.861330500 +0800
        @@ -1,5 +1,5 @@
         QA output created by 032
        -100 iterations
        -0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
        -*
        -0100000
        +1: [768..775]: unwritten
        +Unwritten extents found!
        ...
        (Run 'diff -u tests/generic/032.out results/generic/032.out.bad'  to see the entire diff)
    Ran: generic/032
    Failures: generic/032
    Failed 1 of 1 tests
    
    In write_end(), we should update i_size of inode before unlock page,
    otherwise, we will lose newly updated data in following race condition.
    
    Thread A			Thread B
    - write_end
     - unlock page
    				- writepages
    				 - lock_page
    				  - writepage
    				  if page is out-of-range of file size,
    				  we will skip writting the page.
     - update i_size
    Signed-off-by: default avatarChao Yu <yuchao0@huawei.com>
    Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
    3024c9a1
data.c 44.4 KB