Re: Question about XFS_MAXINUMBER

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Mar 17, 2018 at 06:40:23AM +0100, Miklos Szeredi wrote:
> On Fri, Mar 16, 2018 at 11:24 PM, Dave Chinner <david@xxxxxxxxxxxxx> wrote:
> > On Fri, Mar 16, 2018 at 04:05:22PM +0200, Amir Goldstein wrote:
> >> Hi guys,
> >>
> >> I am trying to get a lower bound for unused inode number MSB on
> >> a mounted xfs super block, so I can publish it on struct super_block.
> >
> > Sorry, what?
> >
> > The inode number is owned by the filesystem - nobody should be
> > touching it or making assumptions they can screw with it in any way.
> >
> >> This doesn't need to be a tight lower bound, but it needs to be
> >> a loewr bound that cannot change with growfs nor when
> >> remounting with different options (i.e. inode64).
> >>
> >> This is needed for overlayfs to be able to use the unused upper bits
> >> for overlayfs inode number namespace (see [1]).
> >
> > SO you're assuming that filesystems don't ever encode information
> > into their inode numbers. I've already got plans to use a bunch of
> > the unused upper bits in the inode number internally in XFS for
> > subvolumes, and ISTR that Darrick was mulling a use for some of
> > them a while back, too...
> >
> >> I realize that for a given agcount, a "soft" lower bound of unused
> >> upper bits is agno_log-agblklog-inopblog, which makes the "hard"
> >> lower bound 32-agblklog-inopblog, so I think I can use this number.
> >>
> >> I was staring at this definition and tried to figure out where this
> >> absolute limit of 56 used bits came from:
> >>  #define XFS_MAXINUMBER          ((xfs_ino_t)((1ULL << 56) - 1ULL))
> >>
> >> Is this number really correct? If yes, then where does the constrain
> >> on maximum 56 bits come from?
> >
> > Yes, 56 bits is the current maximum *physical* inode number - the
> > inode number is currently a physical representation of the location
> > on disk. 56 bits is needed to represent inodes in 2^63 bytes of
> > physical space.
> >
> > Off the top of my head, it works out something like this for a
> > a 512 byte inode, 4k block size filesystem:
> >
> > bits            range           meaning
> > 6               0-63            inode # in chunk
> > 7-22            1TB             block offset in AG of inode 0
> >                                 blkspag / bsize / inopblk
> >                                 2^30 / 2^12 / 2^3 = 2^15
> > 23-55           AGNO            AG number
> >
> > The breakdown of bits change for different inode and block sizes,
> > but the worse case comes out somewhere around 56 bits...
> >
> > *but*
> >
> > #define NULLFSINO ((xfs_ino_t)-1)
> >
> > is a valid inode number on disk, indicating that the field is not
> > holding an inode number. the MSB indicates the inode number is a
> > "virtual" inode number, holding some special significance that is
> > not directly a physical inode number.  Hence we actually use all 64
> > bits of the inode number on disk, and hence there are no free bits
> > in the inode number for anyone outside XFS to use.
> >
> > IOWs, I think your plan is DOA because we already use the entire 64
> > bit space in the inode number field and have plans for the "unused
> > bits" already in motion....
> 
> We don't care about internal or on-disk use.
> 
> Does that still make it DOA?

Yes, because we reserve the full 64 bits for internal filesystem
use. Just because we aren't using them right now doesn't mean we'll
never use them.

> I ask, because we've thought long and hard about what to do for
> multiplexing inum space in overlayfs, and found no other sane options.
> Ideas welcome, of course.

Why do you need to "multiplex" the inum space? perhaps you'd do
better to start with a description of why you want to play games
with inode numbers, rather than just posting a patch to steal bits
from other filesytem inode number spaces....

Cheers,

Dave.
-- 
Dave Chinner
david@xxxxxxxxxxxxx
--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux