xfs
[Top] [All Lists]

TAKE 789427 - Move the XFS vnode into the linux inode.

To: linux-xfs@xxxxxxxxxxx
Subject: TAKE 789427 - Move the XFS vnode into the linux inode.
From: Ted Kline <jtk@xxxxxxx>
Date: Wed, 24 May 2000 17:17:18 -0500 (CDT)
Cc: jtk@xxxxxxx
Sender: owner-linux-xfs@xxxxxxxxxxx
Moving the XFS vnode into the linux inode, solving several major
issues with inode re-use.

Now, XFS can be NFS exported.

Some aspects of the unlink path seem to "push" the buffer/page_buf
complex fairly hard, encountering a locking bug that can also occur
without this change with sufficient stress.

This change has been run with DEBUG on/off, Vnode Tracing on/off,
and PageBufMetaData on/off.



Modid:  2.3.99pre2-xfs:slinx:62680a
Date:  Wed May 24 15:10:51 PDT 2000
Workarea:  tiki.cray.com:/data/clink/io/jtk/work-linuxvnode

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

linux/include/linux/behavior.h - 1.1
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/include/linux/behavior.h.diff?r1=text&tr1=1.1&r2=text&tr2=1.0&f=h
        - New file.  More visible definition of 'behavior' structures.

linux/include/linux/vnode.h - 1.1
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/include/linux/vnode.h.diff?r1=text&tr1=1.1&r2=text&tr2=1.0&f=h
        - New file.  More visible definition of 'vnode' structures.

linux/net/sunrpc/sched.c - 1.6
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/net/sunrpc/sched.c.diff?r1=text&tr1=1.6&r2=text&tr2=1.5&f=h
        - Move an irritating printk under RPC_DEBUG.

linux/mm/filemap.c - 1.39
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/mm/filemap.c.diff?r1=text&tr1=1.39&r2=text&tr2=1.38&f=h
        - Define the wait_queue_head pbd_waitq.

linux/kernel/ksyms.c - 1.45
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/kernel/ksyms.c.diff?r1=text&tr1=1.45&r2=text&tr2=1.44&f=h
        - Export 'pdb_waitq', used by pagebuf_daemon/XFS_pbflush.

linux/include/linux/mm.h - 1.31
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/include/linux/mm.h.diff?r1=text&tr1=1.31&r2=text&tr2=1.30&f=h
        - Add extern for pbd_waitq.

cmd/xfs/sim/src/vnode.c - 1.53
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/cmd/xfs/sim/src/vnode.c.diff?r1=text&tr1=1.53&r2=text&tr2=1.52&f=h
        - Change calling parameters on libsim's vn_get() & vn_alloc()
          to match the kernel side.

linux/fs/page_buf.c - 1.97
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/page_buf.c.diff?r1=text&tr1=1.97&r2=text&tr2=1.96&f=h
        - Clean up the pagebuf_delwri_flush routine, it had several
          bugs that would cause looping on the queues.
          Make the "walkq" traces more unique.

linux/fs/xfs/xfsidbg.c - 1.143
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/xfsidbg.c.diff?r1=text&tr1=1.143&r2=text&tr2=1.142&f=h
        - Rework "vnode" & "vntrace" commands.
          Add "vn" command: prints inode, vnode & vntrace all
          from one vnode address.
          Add "vntraceaddr" command to print the vntrace if
          all you have is the trace buffer address.

linux/fs/xfs/xfs_log.c - 1.217
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/xfs_log.c.diff?r1=text&tr1=1.217&r2=text&tr2=1.216&f=h
        - Call XFS_bflush() out of xfs_log_force() to push out
          the metadata pages when CONFIG_PAGE_BUF_META is true.

linux/fs/xfs/xfs_quota_priv.h - 1.11
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/xfs_quota_priv.h.diff?r1=text&tr1=1.11&r2=text&tr2=1.10&f=h
        - Change the XFS_PURGE_INODE macro to take the XFS
          inode address instead of the vnode, change the
          VMAP call made inside this macro.

linux/fs/xfs/xfs_rw.c - 1.314
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/xfs_rw.c.diff?r1=text&tr1=1.314&r2=text&tr2=1.313&f=h
        - Use 'vn_count()' to check the reference count.

linux/fs/xfs/xfs_buf.h - 1.51
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/xfs_buf.h.diff?r1=text&tr1=1.51&r2=text&tr2=1.50&f=h
        - Add definition/prototype for XFS_pbflush().

linux/fs/xfs/xfs_vnodeops.c - 1.452
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/xfs_vnodeops.c.diff?r1=text&tr1=1.452&r2=text&tr2=1.451&f=h
        - Use 'vn_count()' to check the reference count.
          Add some vn_trace_'s.

linux/fs/xfs/xfs_rtalloc.c - 1.60
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/xfs_rtalloc.c.diff?r1=text&tr1=1.60&r2=text&tr2=1.59&f=h
        - Add the XFS inode pointer to VMAP calls.

linux/fs/xfs/xfs_qm_syscalls.c - 1.37
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/xfs_qm_syscalls.c.diff?r1=text&tr1=1.37&r2=text&tr2=1.36&f=h
        - Change vn_get calls.

linux/fs/xfs/xfs_log_recover.c - 1.181
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/xfs_log_recover.c.diff?r1=text&tr1=1.181&r2=text&tr2=1.180&f=h
        - Minor fix in a console message.

linux/fs/xfs/xfs_vfsops.c - 1.268
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/xfs_vfsops.c.diff?r1=text&tr1=1.268&r2=text&tr2=1.267&f=h
        - Use 'vn_count()' to check the reference count.

linux/fs/xfs/xfs_iget.c - 1.115
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/xfs_iget.c.diff?r1=text&tr1=1.115&r2=text&tr2=1.114&f=h
        - Change vn_get/vn_alloc calls.

linux/fs/xfs/xfs_mount.c - 1.224
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/xfs_mount.c.diff?r1=text&tr1=1.224&r2=text&tr2=1.223&f=h
        - Add the XFS inode pointer to VMAP calls.

linux/fs/xfs/xfs_qm.c - 1.49
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/xfs_qm.c.diff?r1=text&tr1=1.49&r2=text&tr2=1.48&f=h
linux/fs/xfs/xfs_inode.c - 1.288
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/xfs_inode.c.diff?r1=text&tr1=1.288&r2=text&tr2=1.287&f=h
        - Use 'vn_count()' to check the reference count.

linux/fs/xfs/xfs_inode.h - 1.135
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/xfs_inode.h.diff?r1=text&tr1=1.135&r2=text&tr2=1.134&f=h
        - Add XFS_IRECLAIM flag for debugging.

linux/fs/xfs/pseudo-inc/sys/vnode.h - 1.21
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/pseudo-inc/sys/vnode.h.diff?r1=text&tr1=1.21&r2=text&tr2=1.20&f=h
        - Move a substantial portion to linux/include/linux/vnode.h

linux/fs/xfs/pseudo-inc/ksys/behavior.h - 1.7
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/pseudo-inc/ksys/behavior.h.diff?r1=text&tr1=1.7&r2=text&tr2=1.6&f=h
        - Move a substantial portion to linux/include/linux/behavior.h

linux/fs/xfs/linux/xfs_lrw.c - 1.40
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/linux/xfs_lrw.c.diff?r1=text&tr1=1.40&r2=text&tr2=1.39&f=h
        - Add the XFS_pbflush() routine.
          In xfs_trigger_io add a call to 'wake up' the
          pagebuf daemon.

linux/fs/xfs/linux/xfs_file.c - 1.29
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/linux/xfs_file.c.diff?r1=text&tr1=1.29&r2=text&tr2=1.28&f=h
        - Add ASSERT's after inode to vnode address conversion.

linux/fs/xfs/linux/xfs_vnode.c - 1.24
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/linux/xfs_vnode.c.diff?r1=text&tr1=1.24&r2=text&tr2=1.23&f=h
        - Major gutting!  Remove all routines that were involved
          in maintaining the vnode cache & vnode freelist mechanisms.
          Vn_alloc now does a linux 'iget', vn_get does a linux 'igrab',
          vn_put does a linux 'iput'.
          Vn_hold/rele use the linux inode i_count.
          Vn_count provides a 'sample' of the reference count.
          Vn_address determines if it's 'safe' to return a vnode address.
          Vn_initialize sets up an XFS vnode within the linux inode;
          called out of 'read_inode'.
          Vn_revalidate updates the linux inode from the XFS inode at
          xfs_iget time.
          Vn_remove tears down, purges, inactivates, flushes, and
          otherwise disposes of an XFS vnode, leaving it unaddressable
          out of the linux inode.
          Change the vn_trace_ routines to trace inode->i_count.

linux/fs/xfs/linux/xfs_super.c - 1.66
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/linux/xfs_super.c.diff?r1=text&tr1=1.66&r2=text&tr2=1.65&f=h
        - Only use the 'read_inode', 'delete_inode' & 'clear_inode'
          methds, anything else is 'advisory' in terms of when
          the XFS vnode could be purged.
          Minor changes in 'put_super' allowing for the different
          reference counts held on the root inode/vnode.

linux/fs/xfs/linux/xfs_iops.c - 1.49
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/linux/xfs_iops.c.diff?r1=text&tr1=1.49&r2=text&tr2=1.48&f=h
        - Minor re-arrangement allowing for the differents
          location/initialization of the vnode.
          Add ASSERT's after inode to vnode address conversion.

linux/fs/xfs/linux/xfs_iops.h - 1.6
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/linux/xfs_iops.h.diff?r1=text&tr1=1.6&r2=text&tr2=1.5&f=h
        - Prototypes for linvfs_revalidate_core() and
          linvfs_set_inode_ops().

linux/include/linux/xfs_fs_i.h - 1.5
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/include/linux/xfs_fs_i.h.diff?r1=text&tr1=1.5&r2=text&tr2=1.4&f=h
        - Define the vnode within the inode 'file system private' union.

linux/kdb/modules/kdbm_pb.c - 1.20
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/kdb/modules/kdbm_pb.c.diff?r1=text&tr1=1.20&r2=text&tr2=1.19&f=h
        - Update the 'inode' kdb command.

linux/include/linux/page_buf_trace.h - 1.9
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/include/linux/page_buf_trace.h.diff?r1=text&tr1=1.9&r2=text&tr2=1.8&f=h
        - Make the "walkq" traces more unique.

linux/fs/xfs/linux/xfs_ioctl.c - 1.5
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.4-xfs/linux/fs/xfs/linux/xfs_ioctl.c.diff?r1=text&tr1=1.5&r2=text&tr2=1.4&f=h
        - Remove extraneous 'iget', made unnecessary now
          that xfs_iget/vn_get/vn_alloc does it.



<Prev in Thread] Current Thread [Next in Thread>
  • TAKE 789427 - Move the XFS vnode into the linux inode., Ted Kline <=