On Mon, 2010-05-24 at 22:19 -0500, Eric Sandeen wrote:
> Nathan Scott wrote:
> > ----- "Jeff Zheng" <Jeff.Zheng@xxxxxxxxxx> wrote:
> >
> >> Hi,
> >>
> >> We are trying to control where the files are being allocated on the
> >> disks, and we tried xfs preallocation. What we found is that each time
> >> the file being reopened the location of the pre-allocated space could
> >> change (not all the time). Is there a way to do persistent
> >> preallocation in xfs, like the same file will always be on the same
> >> location on the disk given that the requested size doesn’t change?
> >>
> >
> > Sounds like you are truncating the file (on open?), and hence discarding
> > the preallocation. XFS preallocation is persistent already, so I think
> > something you are doing must be discarding those preallocated extents.
> >
> > Could you post a test program, or sequence of xfs_io commands, that would
> > demonstrate the problem?
> >
> > cheers.
> >
>
> ... maybe you mean that truncating / pre-allocating the same space repeatedly
> on the same filename ends up with blocks mapped in different locations...?
> That's entirely expected... nothing about the preallocation interface lets
> you "control *where* files are being allocated" as you said above...
>
Way back when I wrote some code to do just this, but I've never had the
time to wrap it all up. The basic idea is to add another argument to
preallocate, as a hint where to try first. The allocator then uses the
'extend file' path, with the hint taking the place of the current eof.
See http://oss.sgi.com/archives/xfs/2006-07/msg01005.html
for my original patches. I'd still like to have these pushed through -
what would it take?
--
Roger Willcocks <roger@xxxxxxxxxxxxxxxx>
|