Jens Axboe <jens.axboe@xxxxxxxxxx> writes: > On Sun, Oct 19 2008, Dmitri Monakhov wrote: >> Block device write procedure is different from regular file: >> - Actual write performed without i_mutex. >> - It has no metadata, so generic_osync_inode(O_SYNCMETEDATA) can not livelock. >> - We do not have to worry about S_ISUID/S_ISGID bits. > > I already did an O_DIRECT part of block device splicing [1], I'll fold > this into the splice branch and double check with some testing. > > [1] http://git.kernel.dk/?p=linux-2.6-block.git;a=commitdiff;h=fbb724a0484aba938024d41ca1dd86337d2550c9;hp=08c7910b275a4c580ad646ae8654439c8dfae4c5 Ok i've missed this branch :(, your approach is really cool. But current patch seems not completely ready, O_DIRECT case: - sync case missed, some one may want use it with O_DIRECT|O_SYNC - i'm not sure why it is necessary to always hold bd_inode->i_mutex inside __splice_on_pice(.., pipe_to_disk) !O_DIRECT case: - still use generic_file_splice_write So I'll re-base to your patch and: - add appropriate fixes necessary fixes for direct case. - redone my patch on top of yours for buffered writes. What do you think? -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html