diff options
Diffstat (limited to 'fs/xfs/linux-2.6/xfs_vfs.c')
| -rw-r--r-- | fs/xfs/linux-2.6/xfs_vfs.c | 19 | 
1 files changed, 17 insertions, 2 deletions
| diff --git a/fs/xfs/linux-2.6/xfs_vfs.c b/fs/xfs/linux-2.6/xfs_vfs.c index c855d62e534..6f7c9f7a862 100644 --- a/fs/xfs/linux-2.6/xfs_vfs.c +++ b/fs/xfs/linux-2.6/xfs_vfs.c @@ -227,7 +227,8 @@ vfs_freeze(  }  vfs_t * -vfs_allocate( void ) +vfs_allocate( +	struct super_block	*sb)  {  	struct vfs		*vfsp; @@ -236,9 +237,23 @@ vfs_allocate( void )  	INIT_LIST_HEAD(&vfsp->vfs_sync_list);  	spin_lock_init(&vfsp->vfs_sync_lock);  	init_waitqueue_head(&vfsp->vfs_wait_single_sync_task); + +	vfsp->vfs_super = sb; +	sb->s_fs_info = vfsp; + +	if (sb->s_flags & MS_RDONLY) +		vfsp->vfs_flag |= VFS_RDONLY; +  	return vfsp;  } +vfs_t * +vfs_from_sb( +	struct super_block	*sb) +{ +	return (vfs_t *)sb->s_fs_info; +} +  void  vfs_deallocate(  	struct vfs		*vfsp) @@ -295,7 +310,7 @@ bhv_remove_all_vfsops(  	bhv_remove_vfsops(vfsp, VFS_POSITION_DM);  	if (!freebase)  		return; -	mp = XFS_BHVTOM(bhv_lookup(VFS_BHVHEAD(vfsp), &xfs_vfsops)); +	mp = XFS_VFSTOM(vfsp);  	VFS_REMOVEBHV(vfsp, &mp->m_bhv);  	xfs_mount_free(mp, 0);  } | 
