xfs
[Top] [All Lists]

Re: Allocating inodes from a single block

To: Eric Sandeen <sandeen@xxxxxxxxxxx>
Subject: Re: Allocating inodes from a single block
From: Nathan Scott <nscott@xxxxxxxxxx>
Date: Wed, 18 Jul 2007 12:01:30 +1000
Cc: Chris Wedgwood <cw@xxxxxxxx>, Michael Nishimoto <miken@xxxxxxxxx>, xfs@xxxxxxxxxxx
In-reply-to: <469D7035.2020507@sandeen.net>
Organization: Aconex
References: <469D0666.6040908@agami.com> <20070717201921.GA26309@tuatara.stupidest.org> <469D7035.2020507@sandeen.net>
Reply-to: nscott@xxxxxxxxxx
Sender: xfs-bounce@xxxxxxxxxxx
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


<Prev in Thread] Current Thread [Next in Thread>