[lkml]   [2007]   [May]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [PATCH 0/5] fallocate system call
    On Thu, May 03, 2007 at 01:22:48PM +0200, Miquel van Smoorenburg wrote:
    > In article <> you write:
    > >On May 02, 2007 18:23 +0530, Amit K. Arora wrote:
    > >> On Sun, Apr 29, 2007 at 10:25:59PM -0700, Chris Wedgwood wrote:
    > >> > On Mon, Apr 30, 2007 at 10:47:02AM +1000, David Chinner wrote:
    > >> >
    > >> > > For FA_ALLOCATE, it's supposed to change the file size if we
    > >> > > allocate past EOF, right?
    > >> >
    > >> > I would argue no. Use truncate for that.
    > >>
    > >> The patch I posted for ext4 *does* change the filesize after
    > >> preallocation, if required (i.e. when preallocation is after EOF).
    > >> I may have to change that, if we decide on not doing this.
    > >
    > >I think I'd agree - it may be useful to allow preallocation beyond EOF
    > >for some kinds of applications (e.g. PVR preallocating live TV in 10
    > >minute segments or something, but not knowing in advance how long the
    > >show will actually be recorded or the final encoded size).
    > I have an application (diablo dreader) where the header-info database
    > basically consists of ~40.000 files, one for each group (it's more
    > complicated that that, but never mind that now).
    > If you grow those files randomly by a few hundred bytes every update,
    > the filesystem gets hopelessly fragmented.
    > I'm using XFS with preallocation turned on, and biosize=18 (which
    > makes it preallocate in blocks of 256KB), and a homebrew patch that
    > leaves the preallocated space on disk preallocated even if the
    > file is closed .. and it helps enormously.

    XFS always has speculative preallocation turned on - this is
    different to explicit preallocation which we are talking about
    here ;)

    FWIW, the reason you need your homebrew patch is that specualtive
    allocation does not set the PREALLOC bit on the inode, and so when
    you close the file the speculative prealloc gets truncated away.
    If you use a real preallocation (XFS_IOC_RESVSP64) or the upcoming
    fallocate() syscall, XFS also sets the PREALLOC bit in the inode so
    it doesn't get truncated away on file close.

    If you don't want to use XFS_IOC_RESVSP64, you could just use
    XFS_IOC_FSSETXATTR to set the prealloc bit on the files you care
    about so you don't need a hack in XFS to prevent truncation of
    speculative allocation on file close.....


    Dave Chinner
    Principal Engineer
    SGI Australian Software Group
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2007-05-08 04:31    [W:0.022 / U:23.932 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site