On Thu, May 25, 2023 at 05:47:08PM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@xxxxxxxxxx> > > Create a simple 'big array' data structure for storage of fixed-size > metadata records that will be used to reconstruct a btree index. For > repair operations, the most important operations are append, iterate, > and sort. .... > +/* > + * Initialize a big memory array. Array records cannot be larger than a > + * page, and the array cannot span more bytes than the page cache supports. > + * If @required_capacity is nonzero, the maximum array size will be set to this > + * quantity and the array creation will fail if the underlying storage cannot > + * support that many records. > + */ > +int > +xfarray_create( > + struct xfs_mount *mp, > + const char *description, > + unsigned long long required_capacity, > + size_t obj_size, > + struct xfarray **arrayp) > +{ > + struct xfarray *array; > + struct xfile *xfile; > + int error; > + > + ASSERT(obj_size < PAGE_SIZE); > + > + error = xfile_create(mp, description, 0, &xfile); > + if (error) > + return error; The xfarray and xfile can be completely independent of anything XFS at all by passing the full xfile "filename" that is to be used here rather than having xfile_create prefix the description with a string like "XFS (devname):". ..... Otherwise this is all fine. -Dave. -- Dave Chinner david@xxxxxxxxxxxxx