xfs
[Top] [All Lists]

TAKE - fix some issues with reclaiming inodes + buffer mapping work

To: unlisted-recipients:; (no To-header on input)
Subject: TAKE - fix some issues with reclaiming inodes + buffer mapping work
From: lord@xxxxxxx
Date: Fri, 30 Jun 2000 13:55:32 -0500
Sender: owner-linux-xfs@xxxxxxxxxxx
This is really two changes in one:

It is a fix for removal on a directory not always cleaning up the on disk
structures correctly. The division of reclaim into two components was wrong
for directories some of the time. It was also broken from user space and
causing xfs_repair to bomb out.

Secondly it contains the start of some work to let us have more control
from XFS of how metadata pagebufs are structured. Eventually it will let
us manipulate inode buffers without having to map them into one chunk
of kernel address space. It also fixes a bug where XFS wanted to do a
trylock on a buffer and pagebuf was always waiting for lock if there
was contention.

Date:  Fri Jun 30 11:54:07 PDT 2000
Workarea:  jen.cray.com:/src/lord/xfs-linux.2.4.0-test1

The following file(s) were checked into:
  bonnie.engr.sgi.com:/isms/slinx/2.4.0-test1-xfs


Modid:  2.4.0-test1-xfs:slinx:65571a
linux/fs/xfs/xfs_ialloc.h - 1.38
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/xfs_ialloc.h.diff?r1=text&tr1=1.38&r2=text&tr2=1.37&f=h
        - change how inode buffer offset is calculated to allow non-mapped inode
          buffers.

linux/fs/xfs/xfs_ialloc.c - 1.137
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/xfs_ialloc.c.diff?r1=text&tr1=1.137&r2=text&tr2=1.136&f=h
        - Explicitly pass buffer flags into a xfs_trans_get_buf call for an 
inode
          buffer. We will eventually turn off the XFS_BUF_MAPPED flag here.

linux/fs/xfs/xfs_buf.h - 1.53
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/xfs_buf.h.diff?r1=text&tr1=1.53&r2=text&tr2=1.52&f=h
        - Add xfs_buf_offset() inline to return the address of an offset in a 
buffer,
          this will work even if the buffer has not been mapped.
          Add xfs_buf_read_flags and xfs_buf_get_flags which let us pass more
          flags from callers.

linux/fs/xfs/xfs_buf_item.c - 1.103
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/xfs_buf_item.c.diff?r1=text&tr1=1.103&r2=text&tr2=1.102&f=h
        - replace XFS_BUF_PTR(bp) + buffer_offset with xfs_buf_offset(bp, 
buffer_offset),
          there needs to be more work here yet.

linux/fs/xfs/xfs_vnodeops.c - 1.458
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/xfs_vnodeops.c.diff?r1=text&tr1=1.458&r2=text&tr2=1.457&f=h
        - fix xfs_reclaim and xfs_finish_reclaim so that a) they do the correct
          locking for a directory which is being removed, and b) so that they 
work
          when called from xfs_repair code.

linux/fs/xfs/xfs_vfsops.c - 1.272
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/xfs_vfsops.c.diff?r1=text&tr1=1.272&r2=text&tr2=1.271&f=h
        - pass extra state into xfs_finish_reclaim

linux/fs/xfs/xfs_inode.c - 1.292
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/xfs_inode.c.diff?r1=text&tr1=1.292&r2=text&tr2=1.291&f=h
        - change how inode buffer offset is calculated to allow non-mapped inode
          buffers.

linux/fs/xfs/xfs_inode.h - 1.137
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/xfs_inode.h.diff?r1=text&tr1=1.137&r2=text&tr2=1.136&f=h
        - change prototypes for xfs_finish_reclaim and xfs_inotobp

linux/fs/xfs/xfs_trans_buf.c - 1.86
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/xfs_trans_buf.c.diff?r1=text&tr1=1.86&r2=text&tr2=1.85&f=h
        - Allow callers of transaction buffer calls to specify locking and 
mapping
          flags, for now we end up passing the same flags down to pagebuf as 
before,
          but this gives us the option of turning mapping off for inode buffers.

linux/fs/xfs/linux/xfs_griostubs.c - 1.10
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/linux/xfs_griostubs.c.diff?r1=text&tr1=1.10&r2=text&tr2=1.9&f=h
        - Changes elsewhere required an extra include to make this build

linux/include/linux/page_buf.h - 1.51
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/include/linux/page_buf.h.diff?r1=text&tr1=1.51&r2=text&tr2=1.50&f=h
        - add pagebuf_offset prototype

linux/fs/pagebuf/page_buf.c - 1.10
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/pagebuf/page_buf.c.diff?r1=text&tr1=1.10&r2=text&tr2=1.9&f=h
        - For mapped pagebufs do not request highmem pages - we would need to 
use
          kmap on the data in order to access it. Most pages will be data pages,
          and these can be highmem. Also add a pagebuf_offset function for 
returning
          the address of something within a pagebuf - only suitable for use on
          those non highmem pages.



<Prev in Thread] Current Thread [Next in Thread>
  • TAKE - fix some issues with reclaiming inodes + buffer mapping work, lord <=