On Tue, 2007-07-17 at 20:43 -0500, Eric Sandeen wrote:
> Chris Wedgwood wrote:
> > On Tue, Jul 17, 2007 at 11:11:50AM -0700, Michael Nishimoto wrote:
> >
> >> Filesystem free space becomes fragmented over time. It's possible
> >> for total free space to be a decent size and still not have a chunk
> >> large enough to allocate new inodes.
> >
> > by default there is a restriction that indoes shouldn't consume more
> > that 25% of the total space
> >
> > see the mkfs.xfs man-page for details, search for 'maxpct'
> >
> > for existing filesystems you can use xfs_db to rewrite this value
FWIW, xfs_growfs can be used to change this online.
> The problem is that inodes are allocated in "clusters" of blocks.
>
> If your free blocks aren't such that they can form a cluster, I think
> you're out of luck when trying to allocate new inodes if your existing
> clusters are full.
Have you looked into this much Mike? I've not recently, but from a
quick peek it looks like the cluster size is set in xfs_mount.c as
mp->m_inode_cluster_size and a different value is used depending on
the machines memory size ... so, perhaps this can be made a mount
option? (XFS_INODE_SMALL_CLUSTER_SIZE is 1FSB AFAICT). But, maybe
I'm missing something or not remembering some details here that'd
make that infeasible.
Even better than a mount option would be to degrade to smaller size
dynamically... not sure how hard that'd be either ... probably lots
of corner cases lurking there.
cheers.
--
Nathan
|