On Sun, Sep 17, 2006 at 10:39:07PM +0400, Vladimir V. Saveliev wrote: > It seems the problem can be fixed a bit simpler. Currently, there is a > difference between read and readv: read calls f_op->read if it is defined, > but readv calls f_op->read if f_op->aio_read is not defined. The latest is a > bit unlogical imho: > wouldn't it be more consistent if readv worked via f_op->read if it is > defined? > If we fixed readv (do_readv_writev) that way - reiser4 would not need > anything from its aio_read but generic_file_aio_read.
This behaviour is historic baggae. readv used to call ->readv and fall back to ->read when it wasn't available. We now merged ->readv into ->aio_read and kept that behaviour. I think it makes sense, though - if the filesystem supports vator operations via ->aio_read we should use them and not fall back to the manual looping around ->read. I'd rather change read to do the same thing as readv so we have consistent behaviour. why does this matter for reiser4?