[PATCH 25/30 V2] libxfs: fix root inode handling inconsistencies

Dave Chinner david at fromorbit.com
Thu Oct 31 17:04:38 CDT 2013


On Thu, Oct 31, 2013 at 08:00:24AM -0700, Christoph Hellwig wrote:
> On Thu, Oct 31, 2013 at 03:13:43PM +1100, Dave Chinner wrote:
> > -	if ((flags & LIBXFS_MOUNT_ROOTINOS) && rtmount_inodes(mp)) {
> > -		if (mp->m_rootip)
> > -			libxfs_iput(mp->m_rootip, 0);
> > +	/* set up the realtime inodes if they exist */
> > +	error = rtmount_inodes(mp);
> > +	if (error)
> >  		return NULL;
> > -	}
> >  
> >  	/*
> >  	 * mkfs calls mount before the AGF/AGI structures are written.
> >  	 */
> > -	if ((flags & LIBXFS_MOUNT_ROOTINOS) && sbp->sb_rootino != NULLFSINO &&
> > +	if (sbp->sb_rootino != NULLFSINO &&
> >  	    xfs_sb_version_haslazysbcount(&mp->m_sb)) {
> 
> Oh, I hadn't noticed that LIBXFS_MOUNT_ROOTINOS does more than reading
> the root inode.  Seems like mkfs might need the rt inodes if a file with
> the rt flag is specified in the proto file.

mkfs always allocates the rt inodes directly after the root
directory is created.

> I can't see how xfs_copy could need either the rt inodes nor the perag
> data.

Right, it doesn't need them, but it doesn't hurt at all to
initialise them because all the ag headers are about to be read to
find all the used space, anyway.

Cheers,

Dave.
-- 
Dave Chinner
david at fromorbit.com



More information about the xfs mailing list