On 2019/9/17 23:31, Theodore Y. Ts'o wrote:
On Tue, Sep 17, 2019 at 04:48:14PM +0800, yangerkun wrote:
No need to wait when offset equals to 0. And it will trigger a bug since
the latter __ext4_journalled_invalidatepage can free the buffers but leave
page still dirty.
That's only true if the block size == the page size, no? If the
offset is zero and the block size is 1k, we still need to wait.
Shouldn't the better fix be:
- if (offset > PAGE_SIZE - i_blocksize(inode))
+ if (offset >= PAGE_SIZE - i_blocksize(inode))
It can trigger free buffers in
__ext4_journalled_invalidatepage(offset==0,blocksize=1k), and we will
see the bug again.
For some other case, like offset==3k blocksize=1k, actually we should
wait the commit, but now we will return directly.
Thanks.
- Ted
.