xfs
[Top] [All Lists]

TAKE - Close window on inodes that aren't fully set up

Subject: TAKE - Close window on inodes that aren't fully set up
From: Eric Sandeen <sandeen@xxxxxxx>
Date: Thu, 2 May 2002 12:18:29 -0500
Sender: owner-linux-xfs@xxxxxxxxxxx
The various reports of oopses with NFS + xfsdump should be solved
with this mod.

If xfs_iget created a new linux inode, we would unlock it before we
set the inode ops.  This wasn't a problem for most cases, but for
things like nfs and xfsdump that can just reach in and grab an inode,
we had a window of time where inodes were "in the wild" with no ops set;
NFS tries to execute these ops without checking first, and it would oops.

This mod keeps the inodes locked until the ops have been set.

It also rearranges where linvfs_set_inode_ops gets called from; it's
gone from most of the linvfs layer now, instead called out of
xfs_iget_vnode_init for inodes which are already on-disk, or xfs_ialloc
for newly created inodes.

Explicit calls to unlock_new_inode are moved as well; it's now done
at the bottom of linvfs_set_inode_ops.

This _may_ allow us to re-enable the fh_to_dentry/dentry_to_fh methods
for nfs; still testing that.

Date:  Thu May  2 10:13:43 PDT 2002
Workarea:  stout.americas.sgi.com:/localhome/src/sandeen/2.4.x-xfs/workarea-iops

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


Modid:  2.4.x-xfs:slinx:118073a
linux/fs/xfs/xfs_vfsops.c - 1.343
        - Remove call to linvfs_set_inode_ops, done elsewhere now

linux/fs/xfs/xfs_iget.c - 1.153
        - Set linux inode ops in xfs_iget_vnode_init if we have the vn_type
          Remove unlock_new_inode except for error cases

linux/fs/xfs/xfs_inode.c - 1.336
        - Set linux inode ops in xfs_ialloc for new inodes

linux/fs/xfs/linux/xfs_vnode.c - 1.73
        - Remove call to linvfs_set_inode_ops, done elsewhere now

linux/fs/xfs/linux/xfs_super.c - 1.166
        - Remove linvfs_set_inode_ops from linvfs_read_super, done elsewhere now
          Return immediately from linvfs_set_inode_ops if it's not a new inode
          Unlock new inode when livnfs_set_inode_ops is finished.

linux/fs/xfs/linux/xfs_iops.c - 1.137
linux/fs/xfs/linux/xfs_ioctl.c - 1.58
        - Remove call to linvfs_set_inode_ops, done elsewhere now



<Prev in Thread] Current Thread [Next in Thread>
  • TAKE - Close window on inodes that aren't fully set up, Eric Sandeen <=