On Thu, 2010-05-27 at 15:05 -0400, Christoph Hellwig wrote:
> If a filesystem is mounted without the inode64 mount option we should still
> be able to access inodes not fitting into 32 bits, just not created new
> ones. For this to work we need to make sure the inode cache radix tree
> is initialized for all allocation groups, not just those we plan to allocate
> inodes from. This patch makes sure we initialize the inode cache radix
> tree for all allocation groups, and also cleans xfs_initialize_perag up
> a bit to separate the inode32 logical from the general perag structure
> setup.
>
> Signed-off-by: Christoph Hellwig <hch@xxxxxx>
One other thing:
> Index: xfs/fs/xfs/xfs_inode.c
> ===================================================================
> --- xfs.orig/fs/xfs/xfs_inode.c 2010-05-27 20:59:09.000000000 +0200
> +++ xfs/fs/xfs/xfs_inode.c 2010-05-27 20:59:43.315004399 +0200
> @@ -2624,7 +2624,6 @@ xfs_iflush_cluster(
> int i;
>
> pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino));
> - ASSERT(pag->pag_ici_init);
This doesn't apply in my tree, because it's missing this:
ASSERT(pag->pagi_inodeok);
I believe that this missing assertion should be deleted
also, to go along with the purpose of this patch.
Again, I'll make this change myself before I commit;
let me know if you would like me not to.
-Alex
>
> inodes_per_cluster = XFS_INODE_CLUSTER_SIZE(mp) >> mp->m_sb.sb_inodelog;
> ilist_size = inodes_per_cluster * sizeof(xfs_inode_t *);
>
|