This implements direct I/O for xfs on linux, read and write should function.
Testing has been limited so far. There is cache coherency between buffered
and direct I/O to the extent that the direct calls will flush or flush and
invalidate the cache before starting I/O. A systune has been added at
/proc/sys/vm/pagebuf/max_dio_pages which defines how many pages will be
locked down at once during an individual read or write call, this does not
limit the size of the I/O, just the size of the requests which will be
issued to the block layer.
Steve
Date: Mon Mar 5 08:47:52 PST 2001
Workarea: jen.americas.sgi.com:/src/lord/xfs-linux.2.4
The following file(s) were checked into:
bonnie.engr.sgi.com:/isms/slinx/2.4.x-xfs
Modid: 2.4.x-xfs:slinx:88886a
linux/fs/xfs/xfs_rw.c - 1.330
- fix xfs_zero_eof in direct I/O case
linux/fs/xfs/xfs_buf.h - 1.67
- minor cleanup
linux/fs/xfs/linux/xfs_lrw.c - 1.79
- Add bounds checking for direct I/O, do the cache invalidation for
data coherency on direct I/O.
linux/fs/xfs/linux/xfs_file.c - 1.39
- Minor tweaking
linux/fs/xfs/linux/xfs_vnode.c - 1.48
- remove unneeded functions
linux/fs/xfs/linux/xfs_fs_subr.c - 1.27
- limit flush/toss and flushinval to when there is data to work on.
linux/fs/xfs/linux/xfs_iops.c - 1.95
- fix dioinfo ioctl return values
linux/include/linux/page_buf.h - 1.78
- Add systune for direct I/O maximum pages
linux/fs/xfs/linux/xfs_ioctl.c - 1.31
- fix dioinfo ioctl return values
linux/fs/pagebuf/page_buf.c - 1.61
- Add systune for the maximum amount of pages to lock down for one
direct I/O request
linux/fs/pagebuf/page_buf_io.c - 1.62
- Implement direct read and write support
linux/fs/xfs/linux/xfs_vnode.h - 1.16
- implement VN_CACHED, VN_DIRTY and VN_MAPPED as direct tests rather
than
function calls.
|