xfs
[Top] [All Lists]

TAKE - rework pagebuf metadata lookup path

Subject: TAKE - rework pagebuf metadata lookup path
From: Steve Lord <lord@xxxxxxx>
Date: Thu, 10 May 2001 09:56:32 -0500
Sender: owner-linux-xfs@xxxxxxxxxxx
Been sitting on this for about a month, time to check it in.

The original architecture, implemented by someone who will remain
nameless, for the cache lookup has bugged me from day one. Two
levels of lookup were involved, one of which was not really needed,
the top one was just an encapsulation to avoid putting an extra
field into an inode. The real problem was that it should not have
been an inode in the first place, all we needed from the inode
was an address space. This replaces the magic metadata inode with
a special structure which xfs passes around where it used to pass
around that inode and removes the need for a lookup to map from the
inode to the pagebuf cache. No significant speedup, but should shrink
the kernel a bit, reduce cpu usage a bit, and reduce contention
on some locks.


Date:  Thu May 10 07:44:32 PDT 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:94513a
linux/fs/xfs/xfsidbg.c - 1.161
        - Change xbuf idbg function to deal with change in target structure

linux/fs/xfs/xfs_buf.h - 1.73
        - Change more macros to call pagebuf directly rather than a wrapper
          function.

linux/fs/xfs/xfs_vfsops.c - 1.316
        - Change names of functions used to release caches during failed mount.

linux/fs/xfs/xfs_mount.c - 1.255
        - change names of functions used to release caches at end of unmount.

linux/fs/xfs/linux/xfs_lrw.c - 1.96
        - remove some wrapper functions which were basically one liners, call 
the
          pagebuf functions directly instead. Also deal with the change to the
          target object for metadata no longer being an inode. Use new 
pagebuf_lookup
          function.

linux/fs/xfs/linux/xfs_super.h - 1.9
        - change the prototypes for metadata cache creation functions.

linux/fs/xfs/linux/xfs_super.c - 1.121
        - change the structures we create to hold the metadata cache.

linux/include/linux/page_buf.h - 1.91
        - mucho prototype changes

linux/fs/pagebuf/page_buf.c - 1.81
        - Change object used for metadata handle from an inode to a special
          structure containing an address space and the pagebuf cache for
          the filesystem. This is passed around directly from xfs to pagebuf
          rather than every pagebuf_get operation involving a search to map
          from the inode to the pagebuf cache - that was just dumb. 

linux/fs/pagebuf/page_buf_locking.c - 1.10
        - Remove one level of indirection in looking up a pagebuf, gets rid of 
          lots of complexity in the code.

linux/fs/pagebuf/page_buf_io.c - 1.79
        - Use new pagebuf_lookup function from one place in I/O path



<Prev in Thread] Current Thread [Next in Thread>
  • TAKE - rework pagebuf metadata lookup path, Steve Lord <=