[Top] [All Lists]

TAKE - XFS multiple blocksize support

To: linux-xfs@xxxxxxxxxxx
Subject: TAKE - XFS multiple blocksize support
From: Steve Lord <lord@xxxxxxx>
Date: Thu, 16 May 2002 11:06:50 -0500
Sender: owner-linux-xfs@xxxxxxxxxxx
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


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:

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 
          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 
          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 
          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

<Prev in Thread] Current Thread [Next in Thread>