This allows Linux XFS to support filesystem blocksizes of less than
a page. So powers of 2 from 512bytes to 4Kbytes on an ia32. It also
switches more of the xfs I/O path to use the generic code used by
other filesystems, the write path is still specific to XFS, but this
too should change over time.
It has had pretty extensive testing, and we have no known problems
on 4K filesystems, I do have one failure in fsx on a 1K block filesystem
which shows after a few hundred thousand interations. We will continue
to work on that one.
There is also a repair problem on small blocksizes. You should upgrade
commands, but apart from some changes in repair there have been no changes
there which are necessary for the small block support.
Success, or otherwise, stories would be appreciated. I would keep this
code off critical servers for a while, but I will be running it on my
machines.
Steve
Date: Thu May 16 09:00:48 PDT 2002
Workarea: jen.americas.sgi.com:/src/lord/xfs-vanilla
The following file(s) were checked into:
bonnie.engr.sgi.com:/isms/slinx/2.4.x-xfs
Modid: 2.4.x-xfs:slinx:119308a
linux/mm/vmscan.c - 1.95
- Remove xfs changes to this file
linux/mm/filemap.c - 1.108
- Remove a BUG check for delalloc which is no longer needed, clear
PG_delalloc when unlocking a page.
linux/kernel/ksyms.c - 1.126
- remove some exports no longer needed by xfs
linux/include/linux/mm.h - 1.80
- define PageDelalloc differently
linux/fs/buffer.c - 1.104
- Simplify delayed buffer handling, when flushing a delayed buffer,
set the delalloc flag on the page.
linux/fs/xfs/xfs_vnodeops.c - 1.525
- remove some vops
linux/fs/xfs/xfs_iocore.c - 1.29
- Some inode size manipulation changes
linux/fs/xfs/xfs_mount.c - 1.281
- Allow in filesystems with a blocksize of less than a page
linux/fs/xfs/linux/xfs_lrw.h - 1.20
- remove prototypes for page VOPs, they are gone
linux/fs/xfs/linux/xfs_lrw.c - 1.134
- Some fixups for multiple block size support, and always use the
generic
read path.
linux/fs/xfs/linux/xfs_super.c - 1.168
- Set s_blocksize based on filesystem blocksize, not always 512
linux/fs/xfs/linux/xfs_iops.c - 1.138
- Move towards using the generic I/O path code more, add a getblock
function to pass to the generic prepare write and direct I/O code.
linux/fs/xfs/linux/xfs_ioctl.c - 1.59
- For direct I/O alignment, report the fs blocksize, not 512 bytes as
the
required alignment.
linux/kdb/modules/kdbm_pg.c - 1.52
- fixup a few bugs
linux/fs/xfs/linux/xfs_vnode.h - 1.30
- Remove some VOPs and fix VN_DIRTY test
linux/fs/xfs/pagebuf/page_buf_io.c - 1.33
- major brain surgery, rework delalloc conversion for multiple blocksize
case again. Remove remainder of read path, and basically make the
write
path use the generic code for buffered - a copy of it for now.
linux/fs/xfs/pagebuf/page_buf.c - 1.21
- Fixes for metadata ops on blocksize less than a pagesize.
linux/fs/xfs/pagebuf/page_buf.h - 1.11
- prototype removal for dead code
linux/fs/xfs/pagebuf/page_buf_internal.h - 1.4
- remove unused defines
|