From: Maxim Patlasov Date: Wed, 2 Oct 2013 17:38:32 +0000 (+0400) Subject: fuse: writepages: crop secondary requests X-Git-Tag: v3.13-rc1~111^2~2 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6eaf4782eb09e28dbd13d23b9ce0fb7646daf37e;p=pandora-kernel.git fuse: writepages: crop secondary requests If writeback happens while fuse is in FUSE_NOWRITE condition, the request will be queued but not processed immediately (see fuse_flush_writepages()). Until FUSE_NOWRITE becomes relaxed, more writebacks can happen. They will be queued as "secondary" requests to that first ("primary") request. Existing implementation crops only primary request. This is not correct because a subsequent extending write(2) may increase i_size and then secondary requests won't be cropped properly. The result would be stale data written to the server to a file offset where zeros must be. Similar problem may happen if secondary requests are attached to an in-flight request that was already cropped. The patch solves the issue by cropping all secondary requests in fuse_writepage_end(). Thanks to Miklos for idea. Signed-off-by: Maxim Patlasov Signed-off-by: Miklos Szeredi --- Reading git-diff-tree failed