Messages in this thread | | | Date | Sat, 2 Feb 2002 20:54:38 +0100 | From | Andrea Arcangeli <> | Subject | Re: O_DIRECT fails in some kernel and FS |
| |
On Sat, Feb 02, 2002 at 01:20:08PM -0500, Chris Mason wrote: > > Ok, the tricky part of direct io on reiserfs is the tails. But, > since direct io isn't allowed on non-page aligned file sizes, we'll > never have direct io onto a normal file tail. > > < 2.4.18 reiserfs versions allowed expanding truncates to set i_size > without creating the corresponding metadata, so we still have to deal > with that. It means we could have a packed tail on any file size, > including those bigger than the 16k limit after which we don't create > tails any more. > > Chris and I had initially decided to unpack the tails on file open > if O_DIRECT is used, but it seems cleaner to add a > reiserfs_get_block_direct_io, and have it return -EINVAL if a read > went to a tail. writes that happen to a tail will trigger tail > conversion.
This is a safe approch (no risk of corruption etc..). However to provide the same semantics of the other filesystems it would be even better if we could unpack the tail within reiserfs_get_block_direct_io rather than returning -EINVAL, but ok, most apps should work fine anyways (and as worse people can workaround the magic by remounting reiserfs with notail before writing the data that will need to be handled later via O_DIRECT).
thanks for the patch,
Andrea - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |