Re: [PATCH 4/7] ext4: fsync should wait for DIO writers
From: Zheng Liu <hidden>
Date: 2012-09-13 12:26:09
On Thu, Sep 13, 2012 at 03:01:25PM +0400, Dmitry Monakhov wrote:
On Thu, 13 Sep 2012 18:46:21 +0800, Zheng Liu [off-list ref] wrote:quoted
On Sun, Sep 09, 2012 at 09:27:11PM +0400, Dmitry Monakhov wrote:quoted
fsync and punch_hole are the places where we have to wait for all existing writers (writeback, aio, dio), but currently we simply flush pended end_io request which is not sufficient. Even more i_mutex is not holded while punch_hole which obviously result in dangerous data corruption due to write-after-free.Hi Dmitry, Lukas already has a patch to take i_mutex locking before punching a hole. Just a reminding. :-)Yes, i've found it after patch was submitted, but this bug make me nervous a bit because we have broken punch_hole implementation long time ago, it allow to destroy data easily, user are able to call it if has WR permission for a file. So if you ask be i'll vote for hide it under CAP_SYS_RESOURCE until proper implementation appears. Same it true for EXT4_IO_MOVE_EXT because it allow to kernel panic since v2.6.30-6558-g748de67, so all primary distros (RH6,Deb6) are affected :(
IMHO, it will be better when this patch is applied, and I prefer to fix the problem rather than hidding it using CAP_SYS_RESOURCE. ;-) Regards, Zheng