07 Nov, 2014

1 commit

  • The xfs_bulkstat_agichunk formatting cursor takes buffer values from
    the main loop and passes them via the structure to the chunk
    formatter, and the writes the changed values back into the main loop
    local variables. Unfortunately, this complex dance is full of corner
    cases that aren't handled correctly.

    The biggest problem is that it is double handling the information in
    both the main loop and the chunk formatting function, leading to
    inconsistent updates and endless loops where progress is not made.

    To fix this, push the struct xfs_bulkstat_agichunk outwards to be
    the primary holder of user buffer information. this removes the
    double handling in the main loop.

    Also, pass the last inode processed by the chunk formatter as a
    separate parameter as it purely an output variable and is not
    related to the user buffer consumption cursor.

    Finally, the chunk formatting code is not shared by anyone, so make
    it local to xfs_itable.c.

    cc: # 3.17
    Signed-off-by: Dave Chinner
    Reviewed-by: Brian Foster
    Signed-off-by: Dave Chinner

    Dave Chinner
     

04 Aug, 2014

1 commit

  • Introduce xfs_bulkstat_ag_ichunk() to process inodes in chunk with a
    pointer to a formatter function that will iget the inode and fill in
    the appropriate structure.

    Refactor xfs_bulkstat() with it.

    Signed-off-by: Jie Liu
    Reviewed-by: Dave Chinner
    Signed-off-by: Dave Chinner

    Jie Liu
     

24 Jul, 2014

1 commit

  • From: Christoph Hellwig

    xfs_bukstat_one doesn't have any failure case that would go away when
    called through xfs_bulkstat, so remove the fallback and the now unessecary
    xfs_bulkstat_single function.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Jie Liu
    Signed-off-by: Jie Liu
    Signed-off-by: Dave Chinner

    Christoph Hellwig
     

24 Jun, 2010

1 commit

  • The block number comes from bulkstat based inode lookups to shortcut
    the mapping calculations. We ar enot able to trust anything from
    bulkstat, so drop the block number as well so that the correct
    lookups and mappings are always done.

    Signed-off-by: Dave Chinner
    Reviewed-by: Christoph Hellwig

    Dave Chinner
     

23 Jun, 2010

1 commit

  • The non-coherent bulkstat versionsthat look directly at the inode
    buffers causes various problems with performance optimizations that
    make increased use of just logging inodes. This patch makes bulkstat
    always use iget, which should be fast enough for normal use with the
    radix-tree based inode cache introduced a while ago.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Dave Chinner

    Christoph Hellwig
     

01 Sep, 2009

1 commit


02 Dec, 2008

2 commits

  • The 32-bit xfs_blkstat_one handler was failing because
    a size check checked whether the remaining (32-bit)
    user buffer was less than the (64-bit) bulkstat buffer,
    and failed with ENOMEM if so. Move this check
    into the respective handlers so that they check the
    correct sizes.

    Also, the formatters were returning negative errors
    or positive bytes copied; this was odd in the positive
    error value world of xfs, and handled wrong by at least
    some of the callers, which treated the bytes returned
    as an error value. Move the bytes-used assignment
    into the formatters.

    Signed-off-by: Eric Sandeen
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Lachlan McIlroy

    sandeen@sandeen.net
     
  • Currently the compat formatter was handled by passing
    in "private_data" for the xfs_bulkstat_one formatter,
    which was really just another formatter... IMHO this
    got confusing.

    Instead, just make a new xfs_bulkstat_one_compat
    formatter for xfs_bulkstat, and call it via a wrapper.

    Also, don't translate the ioctl nrs into their native
    counterparts, that just clouds the issue; we're in a
    compat handler anyway, just switch on the 32-bit cmds.

    Signed-off-by: Eric Sandeen
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Lachlan McIlroy

    sandeen@sandeen.net
     

14 Jul, 2007

1 commit

  • * 32bit struct xfs_fsop_bulkreq has different size and layout of
    members, no matter the alignment. Move the code out of the #else
    branch (why was it there in the first place?). Define _32 variants of
    the ioctl constants.
    * 32bit struct xfs_bstat is different because of time_t and on
    i386 because of different padding. Make xfs_bulkstat_one() accept a
    custom "output formatter" in the private_data argument which takes care
    of the xfs_bulkstat_one_compat() that takes care of the different
    layout in the compat case.
    * i386 struct xfs_inogrp has different padding.
    Add a similar "output formatter" mecanism to xfs_inumbers().

    SGI-PV: 967354
    SGI-Modid: xfs-linux-melb:xfs-kern:29102a

    Signed-off-by: Michal Marek
    Signed-off-by: David Chinner
    Signed-off-by: Tim Shimmin

    Michal Marek
     

28 Sep, 2006

2 commits


09 Jun, 2006

1 commit


29 Mar, 2006

1 commit


02 Nov, 2005

1 commit


17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds