xfs
[Top] [All Lists]

[XFS updates] XFS development tree branch, for-linus, updated. v2.6.33-5

To: xfs@xxxxxxxxxxx
Subject: [XFS updates] XFS development tree branch, for-linus, updated. v2.6.33-53-g398007f
From: xfs@xxxxxxxxxxx
Date: Fri, 26 Feb 2010 15:25:21 -0600
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "XFS development tree".

The branch, for-linus has been updated
  d67b1b0 fs/xfs: Correct NULL test
  180040b xfs: optimize log flushing in xfs_fsync
  8718551 xfs: only clear the suid bit once in xfs_write
  5322892 xfs: kill xfs_bawrite
  07fec73 xfs: log changed inodes instead of writing them synchronously
  e8b217e xfs: remove invalid barrier optimization from xfs_fsync
  20026d9 xfs: kill the unused XFS_QMOPT_* flush flags V2
  7d6a7bd xfs: Use delay write promotion for dquot flushing
  089716a xfs: Sort delayed write buffers before dispatch
  d808f61 xfs: Don't issue buffer IO direct from AIL push V2
  c854363 xfs: Use delayed write for inodes rather than async V2
  777df5a xfs: Make inode reclaim states explicit
  d5db0f9 xfs: more reserved blocks fixups
  388f1f0 xfs: turn off sign warnings
  cbe132a xfs: don't hold onto reserved blocks on remount,ro
  9b00f30 xfs: quota limit statvfs available blocks
  bdfb043 xfs: replace KM_LARGE with explicit vmalloc use
  a14a348 xfs: cleanup up xfs_log_force calling conventions
  4139b3b xfs: kill XLOG_VEC_SET_TYPE
  0cadda1 xfs: remove duplicate buffer flags
  a210c1a xfs: implement quota warnings via netlink
  4d1f88d xfs: clean up error handling in xfs_trans_dqresv
  512dd1a xfs: kill XFS_QMOPT_ASYNC
  587aa0f xfs: rearrange xfs_mod_sb() to avoid array subscript warning
  f0a0eaa xfs: suppress spurious uninitialised var warning in xfs_bmapi()
  58c75cf xfs: make compile warn about char sign mismatches again
  4a24cb7 xfs: clean up sign warnings in dir2 code
  a9273ca xfs: convert attr to use unsigned names
  b9c4864 xfs: xfs_buf_iomove() doesn't care about signedness
  a3380ae xfs: make xfs_dir_cilookup_result use unsigned char
  2bc7542 xfs: convert dirnameops to unsigned char names
  046ea75 xfs: convert DM ops to use unsigned char names
  e2bcd93 xfs: directory names are unsigned
  4e23471 xfs: move more buffer helpers into xfs_buf.c
  64e0bc7 xfs: clean up xfs_bwrite
  873ff55 xfs: clean up log buffer writes
  e57336f xfs: embed the pagb_list array in the perag structure
  8b26c58 xfs: handle ENOMEM correctly during initialisation of perag structures
  b657fc8 xfs: Kill filestreams cache flush
  0fa800f xfs: Add trace points for per-ag refcount debugging.
  aed3bb9 xfs: Reference count per-ag structures
  1c1c6eb xfs: Replace per-ag array with a radix tree
  44b56e0 xfs: convert remaining direct references to m_perag
  4196ac0 xfs: Convert filestreams code to use per-ag get/put routines
  a862e0f xfs: Don't directly reference m_perag in allocation code
  5017e97 xfs: rename xfs_get_perag
  c9c1297 xfs: Don't wake xfsbufd when idle
  453eac8 xfs: Don't wake the aild once per second
  f0a7695 xfs: Use list_heads for log recovery item lists
  5d77c0d xfs: make several more functions static
  6bded0f xfs: clean up inconsistent variable naming in xfs_swap_extent
  3a85cd9 xfs: add tracing to xfs_swap_extents
      from  60b341b778cc2929df16c0a504c91621b3c6a4ad (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit d67b1b03254c501fef371b0e5916c94a52bfc2c5
Author: Julia Lawall <julia@xxxxxxx>
Date:   Sat Feb 6 08:45:15 2010 +0000

    fs/xfs: Correct NULL test
    
    Test the value that was just allocated rather than the previously tested 
one.
    
    A simplified version of the semantic match that finds this problem is as
    follows: (http://coccinelle.lip6.fr/)
    
    // <smpl>
    @r@
    expression *x;
    expression e;
    identifier l;
    @@
    
    if (x == NULL || ...) {
        ... when forall
        return ...; }
    ... when != goto l;
        when != x = e
        when != &x
    *x == NULL
    // </smpl>
    
    Signed-off-by: Julia Lawall <julia@xxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 180040b89ee2aed88c0a0b1fcf7ada9a512b12e3
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Fri Feb 5 09:57:55 2010 +0000

    xfs: optimize log flushing in xfs_fsync
    
    If we have a pinned inode it must have a log item attached to it.
    Usually that log item will have ili_last_lsn already set, in which
    case we only need to flush the log up to that LSN instead of doing a
    full log force.  This gives speedups of about 5% in some fsync heavy
    workloads.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 87185517de81101da5afbc82cefdeed6eeaa38fb
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Wed Feb 3 19:43:31 2010 +0000

    xfs: only clear the suid bit once in xfs_write
    
    file_remove_suid already calls into ->setattr to clear the suid and
    sgid bits if needed, no need to start a second transaction to do it
    ourselves.
    
    Note that xfs_write_clear_setuid issues a sync transaction while the
    path through ->setattr doesn't, but that is consistant with the
    other filesystems.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Alex Elder <aelder@xxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 5322892d867e186c6b4c5fff5c99ea4863696a60
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Thu Feb 4 10:09:14 2010 +1100

    xfs: kill xfs_bawrite
    
    There are no more users of this function left in the XFS code
    now that we've switched everything to delayed write flushing.
    Remove it.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit 07fec73625dc0db6f9aed68019918208a2ca53f5
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Tue Feb 9 11:43:49 2010 +1100

    xfs: log changed inodes instead of writing them synchronously
    
    When an inode has already be flushed delayed write,
    xfs_inode_clean() returns true and hence xfs_fs_write_inode() can
    return on a synchronous inode write without having written the
    inode. Currently these sycnhronous writes only come sync(1),
    unmount, a sycnhronous NFS export and cachefiles so should be
    relatively rare and out of common performance paths.
    
    Realistically, a synchronous inode write is not necessary here; we
    can avoid writing the inode by logging any non-transactional changes
    that are pending.  This needs to be done with synchronous
    transactions, but it avoids seeking between the log and inode
    clusters as we do now. We don't force the log if the inode is
    pinned, though, so this differs from the fsync case.  For normal
    sys_sync and unmount behaviour this is fine because we do a
    synchronous log force in xfs_sync_data which is called from the
    ->sync_fs code.
    
    It does however break the NFS synchronous export guarantees for now,
    but work is under way to fix this at a higher level or for the
    higher level to provide an additional flag in the writeback control
    to tell us that a log force is needed.
    
    Portions of this patch are based on work from Dave Chinner.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxxxxxxxxx>
    Reviewed-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Alex Elder <aelder@xxxxxxx>

commit e8b217e7530c6a073ac69f1c85b922d93fdf5647
Author: Christoph Hellwig <hch@xxxxxx>
Date:   Tue Feb 2 10:16:26 2010 +1100

    xfs: remove invalid barrier optimization from xfs_fsync
    
    We always need to flush the disk write cache and can't skip it just because
    the no inode attributes have changed.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <david@xxxxxxxxxxxxx>

commit 20026d92013d7bb3abb295337191def6758fc086
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Thu Feb 4 09:48:58 2010 +1100

    xfs: kill the unused XFS_QMOPT_* flush flags V2
    
    dquots are never flushed asynchronously. Remove the flag and the
    async write support from the flush function. Make the default flush
    a delwri flush to make the inode flush code, which leaves the
    XFS_QMOPT_SYNC the only flag remaining.  Convert that to use
    SYNC_WAIT instead, just like the inode flush code.
    
    V2:
    - just pass flush flags straight through
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit 7d6a7bde52e449f21a0e86a7a4955b4e08a49d69
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Tue Jan 26 15:13:41 2010 +1100

    xfs: Use delay write promotion for dquot flushing
    
    xfs_qm_dqflock_pushbuf_wait() does a very similar trick to item
    pushing used to do to flush out delayed write dquot buffers. Change
    it to use the new promotion method rather than an async flush.
    
    Also, xfs_qm_dqflock_pushbuf_wait() can return without the flush lock
    held, yet the callers make the assumption that after this call the
    flush lock is held. Always return with the flush lock held.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit 089716aa1480b7197bcd678b8477774c379a2768
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Tue Jan 26 15:13:25 2010 +1100

    xfs: Sort delayed write buffers before dispatch
    
    Currently when the xfsbufd writes delayed write buffers, it pushes
    them to disk in the order they come off the delayed write list. If
    there are lots of buffers Ñ?pread widely over the disk, this results
    in overwhelming the elevator sort queues in the block layer and we
    end up losing the posibility of merging adjacent buffers to minimise
    the number of IOs.
    
    Use the new generic list_sort function to sort the delwri dispatch
    queue before issue to ensure that the buffers are pushed in the most
    friendly order possible to the lower layers.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit d808f617ad00a413585b806de340feda5ad9a2da
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Tue Feb 2 10:13:42 2010 +1100

    xfs: Don't issue buffer IO direct from AIL push V2
    
    All buffers logged into the AIL are marked as delayed write.
    When the AIL needs to push the buffer out, it issues an async write of the
    buffer. This means that IO patterns are dependent on the order of
    buffers in the AIL.
    
    Instead of flushing the buffer, promote the buffer in the delayed
    write list so that the next time the xfsbufd is run the buffer will
    be flushed by the xfsbufd. Return the state to the xfsaild that the
    buffer was promoted so that the xfsaild knows that it needs to cause
    the xfsbufd to run to flush the buffers that were promoted.
    
    Using the xfsbufd for issuing the IO allows us to dispatch all
    buffer IO from the one queue. This means that we can make much more
    enlightened decisions on what order to flush buffers to disk as
    we don't have multiple places issuing IO. Optimisations to xfsbufd
    will be in a future patch.
    
    Version 2
    - kill XFS_ITEM_FLUSHING as it is now unused.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit c854363e80b49dd04a4de18ebc379eb8c8806674
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Sat Feb 6 12:39:36 2010 +1100

    xfs: Use delayed write for inodes rather than async V2
    
    We currently do background inode flush asynchronously, resulting in
    inodes being written in whatever order the background writeback
    issues them. Not only that, there are also blocking and non-blocking
    asynchronous inode flushes, depending on where the flush comes from.
    
    This patch completely removes asynchronous inode writeback. It
    removes all the strange writeback modes and replaces them with
    either a synchronous flush or a non-blocking delayed write flush.
    That is, inode flushes will only issue IO directly if they are
    synchronous, and background flushing may do nothing if the operation
    would block (e.g. on a pinned inode or buffer lock).
    
    Delayed write flushes will now result in the inode buffer sitting in
    the delwri queue of the buffer cache to be flushed by either an AIL
    push or by the xfsbufd timing out the buffer. This will allow
    accumulation of dirty inode buffers in memory and allow optimisation
    of inode cluster writeback at the xfsbufd level where we have much
    greater queue depths than the block layer elevators. We will also
    get adjacent inode cluster buffer IO merging for free when a later
    patch in the series allows sorting of the delayed write buffers
    before dispatch.
    
    This effectively means that any inode that is written back by
    background writeback will be seen as flush locked during AIL
    pushing, and will result in the buffers being pushed from there.
    This writeback path is currently non-optimal, but the next patch
    in the series will fix that problem.
    
    A side effect of this delayed write mechanism is that background
    inode reclaim will no longer directly flush inodes, nor can it wait
    on the flush lock. The result is that inode reclaim must leave the
    inode in the reclaimable state until it is clean. Hence attempts to
    reclaim a dirty inode in the background will simply skip the inode
    until it is clean and this allows other mechanisms (i.e. xfsbufd) to
    do more optimal writeback of the dirty buffers. As a result, the
    inode reclaim code has been rewritten so that it no longer relies on
    the ambiguous return values of xfs_iflush() to determine whether it
    is safe to reclaim an inode.
    
    Portions of this patch are derived from patches by Christoph
    Hellwig.
    
    Version 2:
    - cleanup reclaim code as suggested by Christoph
    - log background reclaim inode flush errors
    - just pass sync flags to xfs_iflush
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit 777df5afdb26c71634edd60582be620ff94e87a0
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Sat Feb 6 12:37:26 2010 +1100

    xfs: Make inode reclaim states explicit
    
    A.K.A.: don't rely on xfs_iflush() return value in reclaim
    
    We have gradually been moving checks out of the reclaim code because
    they are duplicated in xfs_iflush(). We've had a history of problems
    in this area, and many of them stem from the overloading of the
    return values from xfs_iflush() and interaction with inode flush
    locking to determine if the inode is safe to reclaim.
    
    With the desire to move to delayed write flushing of inodes and
    non-blocking inode tree reclaim walks, the overloading of the
    return value of xfs_iflush makes it very difficult to determine
    the correct thing to do next.
    
    This patch explicitly re-adds the checks to the inode reclaim code,
    removing the reliance on the return value of xfs_iflush() to
    determine what to do next. It also means that we can clearly
    document all the inode states that reclaim must handle and hence
    we can easily see that we handled all the necessary cases.
    
    This also removes the need for the xfs_inode_clean() check in
    xfs_iflush() as all callers now check this first (safely).
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit d5db0f97fbbeff11c88dec1aaf1536a975afbaeb
Author: Eric Sandeen <sandeen@xxxxxxxxxxx>
Date:   Fri Feb 5 22:59:53 2010 +0000

    xfs: more reserved blocks fixups
    
    This mangles the reserved blocks counts a little more.
    
    1) add a helper function for the default reserved count
    2) add helper functions to save/restore counts on ro/rw
    3) save/restore reserved blocks on freeze/thaw
    4) disallow changing reserved count while readonly
    
    V2: changed field name to match Dave's changes
    
    Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 388f1f0c346b533b06d8bc792f7204ebc3e4b7da
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Tue Jan 26 15:10:15 2010 +1100

    xfs: turn off sign warnings
    
    Because they cause warnings in static inline functions conditionally
    compiled into XFS from the VFS (e.g. fsnotify).
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit cbe132a8bdcff0f9afd9060948fb50597c7400b8
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Tue Jan 26 15:08:49 2010 +1100

    xfs: don't hold onto reserved blocks on remount,ro
    
    If we hold onto reserved blocks when doing a remount,ro we end
    up writing the blocks used count to disk that includes the reserved
    blocks. Reserved blocks are not actually used, so this results in
    the values in the superblock being incorrect.
    
    Hence if we run xfs_check or xfs_repair -n while the filesystem is
    mounted remount,ro we end up with an inconsistent filesystem being
    reported. Also, running xfs_copy on the remount,ro filesystem will
    result in an inconsistent image being generated.
    
    To fix this, unreserve the blocks when doing the remount,ro, and
    reserved them again on remount,rw. This way a remount,ro filesystem
    will appear consistent on disk to all utilities.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit 9b00f30762fe9f914eb6e03057a616ed63a4e8ca
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Thu Jan 21 11:17:20 2010 +0000

    xfs: quota limit statvfs available blocks
    
    A "df" run on an NFS client of an exported XFS file system reports
    the wrong information for "available" blocks.  When a block quota is
    enforced, the amount reported as free is limited by the quota, but
    the amount reported available is not (and should be).
    
    Reported-by: Guk-Bong, Kwon <gbkwon@xxxxxxxxx>
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit bdfb04301fa5fdd95f219539a9a5b9663b1e5fc2
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Wed Jan 20 21:55:30 2010 +0000

    xfs: replace KM_LARGE with explicit vmalloc use
    
    We use the KM_LARGE flag to make kmem_alloc and friends use vmalloc
    if necessary.  As we only need this for a few boot/mount time
    allocations just switch to explicit vmalloc calls there.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit a14a348bff2f99471a28e5928eb6801224c053d8
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Tue Jan 19 09:56:46 2010 +0000

    xfs: cleanup up xfs_log_force calling conventions
    
    Remove the XFS_LOG_FORCE argument which was always set, and the
    XFS_LOG_URGE define, which was never used.
    
    Split xfs_log_force into a two helpers - xfs_log_force which forces
    the whole log, and xfs_log_force_lsn which forces up to the
    specified LSN.  The underlying implementations already were entirely
    separate, as were the users.
    
    Also re-indent the new _xfs_log_force/_xfs_log_force which
    previously had a weird coding style.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 4139b3b337cffd106744386c842b89dc86e31d4b
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Tue Jan 19 09:56:45 2010 +0000

    xfs: kill XLOG_VEC_SET_TYPE
    
    This macro only obsfucates the log item type assignments, so kill it.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 0cadda1c5f194f98a05d252ff4385d86d2ed0862
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Tue Jan 19 09:56:44 2010 +0000

    xfs: remove duplicate buffer flags
    
    Currently we define aliases for the buffer flags in various
    namespaces, which only adds confusion.  Remove all but the XBF_
    flags to clean this up a bit.
    
    Note that we still abuse XFS_B_ASYNC/XBF_ASYNC for some non-buffer
    uses, but I'll clean that up later.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit a210c1aa7f6c90b729cc3a72d03e789b13cb6c47
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Sun Jan 17 22:36:19 2010 +0000

    xfs: implement quota warnings via netlink
    
    Wire up quota_send_warning to send quota warnings over netlink.
    This is used by various desktops to show user quota warnings.
    
    Tested by running the quota_nld daemon while running the xfstest
    quota tests and observing the warnings.  I'll see how I can get a
    more formal testcase for it written.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 4d1f88d75b00c4d23f4c51305ab5b779a86ef74e
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Wed Jan 13 22:05:49 2010 +0000

    xfs: clean up error handling in xfs_trans_dqresv
    
    Move the error code selection after the goto label and fold the
    xfs_quota_error helper into it.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 512dd1abd9539a474f2792eeaf6783c59ad7778a
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Wed Jan 13 22:05:48 2010 +0000

    xfs: kill XFS_QMOPT_ASYNC
    
    The option is unused and one of the few remaining users of
    xfs_bawrite, so let's get rid of it.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 587aa0feb74ffe3239b5e26ff5d017ba9f5daec9
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Wed Jan 20 12:04:53 2010 +1100

    xfs: rearrange xfs_mod_sb() to avoid array subscript warning
    
    gcc warns of an array subscript out of bounds in xfs_mod_sb().
    The code is written in such a way that if the array subscript is
    out of bounds, then it will assert fail. Rearrange the code to
    avoid the bounds check warning.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit f0a0eaa8da08ebc6519cacd731df05bbb4ca47ce
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Wed Jan 20 10:50:06 2010 +1100

    xfs: suppress spurious uninitialised var warning in xfs_bmapi()
    
    Initialise the xfs_bmalloca_t structure to zero to avoid uninitialised
    variable warnings. This is done by zeroing the arg structure rather than
    using the uninitialised_var() trick so we know for certain that the
    structure is correctly initialised as xfs_bmapi is a very complex
    function and it is difficult to prove warnings are spurious.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit 58c75cfb51393a52b45262394c1fa81514b4d9bd
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Wed Jan 20 10:49:18 2010 +1100

    xfs: make compile warn about char sign mismatches again
    
    The -fno-unsigned-char directive has no effect anymore as the
    XFs build is clean. However, the kernel build hides pointer sign
    differences so turn that back on so that we can clean up all the
    mismatches prior to a userspace code resync.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit 4a24cb71407dc25035d75dd3d118e0e55679e217
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Wed Jan 20 10:48:05 2010 +1100

    xfs: clean up sign warnings in dir2 code
    
    We are now consistently using unsigned char strings for names
    so fix up the remaining warnings in the dir2 code to complete
    the cleanup.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit a9273ca5c6814f393e18ed66645f817b2b71e9ad
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Wed Jan 20 10:47:48 2010 +1100

    xfs: convert attr to use unsigned names
    
    To be consistent with the directory code, the attr code should use
    unsigned names. Convert the names from the vfs at the highest level
    to unsigned, and ænsure they are consistenly used as unsigned down
    to disk.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit b9c48649577dfc4a8c263c106d518effa24ea54b
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Wed Jan 20 10:47:39 2010 +1100

    xfs: xfs_buf_iomove() doesn't care about signedness
    
    xfs_buf_iomove() uses xfs_caddr_t as it's parameter types, but it doesn't
    care about the signedness of the variables as it is just copying the
    data. Change the prototype to use void * so that we don't get sign
    warnings at call sites.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit a3380ae39fa321282c407ba5e1835e14b64853d9
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Wed Jan 20 10:47:25 2010 +1100

    xfs: make xfs_dir_cilookup_result use unsigned char
    
    For consistency with the result of the code.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit 2bc754213d40d67c39ddd58cf240f2b948e1951e
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Wed Jan 20 10:47:17 2010 +1100

    xfs: convert dirnameops to unsigned char names
    
    To be consistent across the codebase, convert the dirnameops to pass
    the directory names by unsigned char strings.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit 046ea753130fc51d885835458bf8c1d84765b9ac
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Wed Jan 20 10:47:08 2010 +1100

    xfs: convert DM ops to use unsigned char names
    
    dmops uses a signed char for it's namespace event. To be consistent
    with the rest of the code, convert them to unsigned char for the
    namespace string.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit e2bcd936eb95d0019ca5e05f9fdd27e770ddded1
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Wed Jan 20 10:44:58 2010 +1100

    xfs: directory names are unsigned
    
    Convert the struct xfs_name to use unsigned chars for the name
    strings to match both what is stored on disk (__uint8_t) and what
    the VFS expects (unsigned char).
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit 4e23471a3f3aba885ea70100db47ccacb5f069f6
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Wed Jan 13 22:17:56 2010 +0000

    xfs: move more buffer helpers into xfs_buf.c
    
    Move xfsbdstrat and xfs_bdstrat_cb from xfs_lrw.c and xfs_bioerror
    and xfs_bioerror_relse from xfs_rw.c into xfs_buf.c.  This also
    means xfs_bioerror and xfs_bioerror_relse can be marked static now.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 64e0bc7d2a6609ad265757a600e2a0d93c8adb47
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Wed Jan 13 22:17:58 2010 +0000

    xfs: clean up xfs_bwrite
    
    Fold XFS_bwrite into it's only caller, xfs_bwrite and move it into
    xfs_buf.c instead of leaving it as a fairly large inline function.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 873ff5501d8cd1a21045d6c1da34f0c3876bc235
Author: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date:   Wed Jan 13 22:17:57 2010 +0000

    xfs: clean up log buffer writes
    
    Don't bother using XFS_bwrite as it doesn't provide much code for
    our use case.  Instead opencode it and fold xlog_bdstrat_cb into the
    new xlog_bdstrat helper.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit e57336ff7fc7520bec7b3a7741043bdebaf622ea
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Mon Jan 11 11:47:49 2010 +0000

    xfs: embed the pagb_list array in the perag structure
    
    Now that the perag structure is allocated memory rather than held in
    an array, we don't need to have the busy extent array external to
    the structure. Embed it into the perag structure to avoid needing an
    extra allocation when setting up.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 8b26c5825e023b1bccac7afd174ebe55b8905cb1
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Mon Jan 11 11:47:48 2010 +0000

    xfs: handle ENOMEM correctly during initialisation of perag structures
    
    Add proper error handling in case an error occurs while initializing
    new perag structures for a mount point.  The mount structure is
    restored to its previous state by deleting and freeing any perag
    structures added during the call.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit b657fc82a3ca6d7ad16a59e81765f0fb0e86cdbb
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Mon Jan 11 11:47:47 2010 +0000

    xfs: Kill filestreams cache flush
    
    The filestreams cache flush is not needed in the sync code as it
    does not affect data writeback, and it is now not used by the growfs
    code, either, so kill it.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 0fa800fbd549736dfdc1d7761f87e33dc8cd973b
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Mon Jan 11 11:47:46 2010 +0000

    xfs: Add trace points for per-ag refcount debugging.
    
    Uninline xfs_perag_{get,put} so that tracepoints can be inserted
    into them to speed debugging of reference count problems.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit aed3bb90abaf0b42e8c8747e192f7bb97f445279
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Mon Jan 11 11:47:45 2010 +0000

    xfs: Reference count per-ag structures
    
    Reference count the per-ag structures to ensure that we keep get/put
    pairs balanced. Assert that the reference counts are zero at unmount
    time to catch leaks. In future, reference counts will enable us to
    safely remove perag structures by allowing us to detect when they
    are no longer in use.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 1c1c6ebcf5284aee4910f3b906ac90c20e510c82
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Mon Jan 11 11:47:44 2010 +0000

    xfs: Replace per-ag array with a radix tree
    
    The use of an array for the per-ag structures requires reallocation
    of the array when growing the filesystem. This requires locking
    access to the array to avoid use after free situations, and the
    locking is difficult to get right. To avoid needing to reallocate an
    array, change the per-ag structures to an allocated object per ag
    and index them using a tree structure.
    
    The AGs are always densely indexed (hence the use of an array), but
    the number supported is 2^32 and lookups tend to be random and hence
    indexing needs to scale. A simple choice is a radix tree - it works
    well with this sort of index.  This change also removes another
    large contiguous allocation from the mount/growfs path in XFS.
    
    The growing process now needs to change to only initialise the new
    AGs required for the extra space, and as such only needs to
    exclusively lock the tree for inserts. The rest of the code only
    needs to lock the tree while doing lookups, and hence this will
    remove all the deadlocks that currently occur on the m_perag_lock as
    it is now an innermost lock. The lock is also changed to a spinlock
    from a read/write lock as the hold time is now extremely short.
    
    To complete the picture, the per-ag structures will need to be
    reference counted to ensure that we don't free/modify them while
    they are still in use.  This will be done in subsequent patch.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 44b56e0a1aed522a10051645e85d300e10926fd3
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Mon Jan 11 11:47:43 2010 +0000

    xfs: convert remaining direct references to m_perag
    
    Convert the remaining direct lookups of the per ag structures to use
    get/put accesses. Ensure that the loops across AGs and prior users
    of the interface balance gets and puts correctly.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 4196ac08c023c6dab90c3fa460d9c06deaa304c4
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Mon Jan 11 11:47:42 2010 +0000

    xfs: Convert filestreams code to use per-ag get/put routines
    
    Use xfs_perag_get() and xfs_perag_put() in the filestreams code.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit a862e0fdcb8862aab2538ec2fc2f0dc07a625c59
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Mon Jan 11 11:47:41 2010 +0000

    xfs: Don't directly reference m_perag in allocation code
    
    Start abstracting the perag references so that the indexing of the
    structures is not directly coded into all the places that uses the
    perag structures. This will allow us to separate the use of the
    perag structure and the way it is indexed and hence avoid the known
    deadlocks related to growing a busy filesystem.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 5017e97d52628fb8ae56e434e86ac2e72ddaac2b
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Mon Jan 11 11:47:40 2010 +0000

    xfs: rename xfs_get_perag
    
    xfs_get_perag is really getting the perag that an inode belongs to
    based on it's inode number. Convert the use of this function to just
    get the perag from a provided ag number.  Use this new function to
    obtain the per-ag structure when traversing the per AG inode trees
    for sync and reclaim.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit c9c129714e71c890bed1bd5b61697a896c3c2d54
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Mon Jan 11 11:49:59 2010 +0000

    xfs: Don't wake xfsbufd when idle
    
    The xfsbufd wakes every xfsbufd_centisecs (once per second by
    default) for each filesystem even when the filesystem is idle.  If
    the xfsbufd has nothing to do, put it into a long term sleep and
    only wake it up when there is work pending (i.e. dirty buffers to
    flush soon). This will make laptop power misers happy.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 453eac8a9aa417878a38bdfbccafd5f7ce4e8e4e
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Mon Jan 11 11:49:58 2010 +0000

    xfs: Don't wake the aild once per second
    
    Now that the AIL push algorithm is traversal safe, we don't need a
    watchdog function in the xfsaild to catch pushes that fail to make
    progress. Remove the watchdog timeout and make pushes purely driven
    by demand. This will remove the once-per-second wakeup that is seen
    when the filesystem is idle and make laptop power misers happy.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit f0a7695380efa31cd281730917f7e907a724d5cb
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Mon Jan 11 11:49:57 2010 +0000

    xfs: Use list_heads for log recovery item lists
    
    Remove the roll-your-own linked list operations.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 5d77c0dc0c05c2c65aee16149fae06831a118730
Author: Eric Sandeen <sandeen@xxxxxxxxxxx>
Date:   Thu Nov 19 15:52:00 2009 +0000

    xfs: make several more functions static
    
    Just minor housekeeping, a lot more functions can be trivially made
    static; others could if we reordered things a bit...
    
    Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 6bded0f383fd7971b76ad6c194dda7d5b814b871
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Thu Jan 14 01:33:56 2010 +0000

    xfs: clean up inconsistent variable naming in xfs_swap_extent
    
    The swap extent ioctl passes in a target inode and a temporary inode
    which are clearly named in the ioctl structure. The code then
    assigns temp to target and vice versa, making it extremely difficult
    to work out which inode is which later in the code.  Make this
    consistent throughout the code.
    
    Also make xfs_swap_extent static as there are no external users of
    the function.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

commit 3a85cd96d3ab3c6dcf88b81fc6eaddb84e565a43
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Thu Jan 14 01:33:55 2010 +0000

    xfs: add tracing to xfs_swap_extents
    
    To be able to diagnose whether the swap extents function is
    detecting compatible inode data fork configurations for swapping
    extents, add tracing points to the code to allow us to see the
    format of the inode forks before and after the swap.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Signed-off-by: Alex Elder <aelder@xxxxxxx>

-----------------------------------------------------------------------

Summary of changes:
 fs/xfs/Makefile                |    2 +-
 fs/xfs/linux-2.6/kmem.c        |   56 ++----
 fs/xfs/linux-2.6/kmem.h        |   21 ++-
 fs/xfs/linux-2.6/xfs_acl.c     |   11 +-
 fs/xfs/linux-2.6/xfs_buf.c     |  290 +++++++++++++++++++++++++-----
 fs/xfs/linux-2.6/xfs_buf.h     |   52 ++----
 fs/xfs/linux-2.6/xfs_fs_subr.c |    2 +-
 fs/xfs/linux-2.6/xfs_ioctl.c   |   21 ++-
 fs/xfs/linux-2.6/xfs_ioctl.h   |   12 +-
 fs/xfs/linux-2.6/xfs_ioctl32.c |    4 +-
 fs/xfs/linux-2.6/xfs_iops.c    |    4 +-
 fs/xfs/linux-2.6/xfs_lrw.c     |   62 +------
 fs/xfs/linux-2.6/xfs_lrw.h     |    3 -
 fs/xfs/linux-2.6/xfs_super.c   |  169 ++++++++++++++----
 fs/xfs/linux-2.6/xfs_sync.c    |  186 ++++++++++++++------
 fs/xfs/linux-2.6/xfs_sync.h    |    1 -
 fs/xfs/linux-2.6/xfs_trace.h   |   81 +++++++++
 fs/xfs/linux-2.6/xfs_xattr.c   |   27 ++-
 fs/xfs/quota/xfs_dquot.c       |   47 ++---
 fs/xfs/quota/xfs_dquot_item.c  |   99 ++---------
 fs/xfs/quota/xfs_dquot_item.h  |    4 -
 fs/xfs/quota/xfs_qm.c          |   40 +++--
 fs/xfs/quota/xfs_qm_bhv.c      |    2 +-
 fs/xfs/quota/xfs_qm_syscalls.c |    4 +-
 fs/xfs/quota/xfs_trans_dquot.c |   49 ++++--
 fs/xfs/xfs_acl.h               |    4 +-
 fs/xfs/xfs_ag.h                |   16 +-
 fs/xfs/xfs_alloc.c             |   96 +++++-----
 fs/xfs/xfs_alloc_btree.c       |    9 +-
 fs/xfs/xfs_attr.c              |   52 +++---
 fs/xfs/xfs_attr.h              |    3 +-
 fs/xfs/xfs_attr_leaf.c         |   30 ++--
 fs/xfs/xfs_attr_sf.h           |    2 +-
 fs/xfs/xfs_bmap.c              |   17 +-
 fs/xfs/xfs_bmap_btree.c        |    2 +-
 fs/xfs/xfs_bmap_btree.h        |    1 -
 fs/xfs/xfs_btree.c             |    4 +-
 fs/xfs/xfs_buf_item.c          |   72 ++++----
 fs/xfs/xfs_da_btree.c          |    4 +-
 fs/xfs/xfs_da_btree.h          |    5 +-
 fs/xfs/xfs_dfrag.c             |   43 +++--
 fs/xfs/xfs_dfrag.h             |    3 -
 fs/xfs/xfs_dir2.c              |    8 +-
 fs/xfs/xfs_dir2.h              |    4 +-
 fs/xfs/xfs_dir2_block.c        |    9 +-
 fs/xfs/xfs_dir2_leaf.c         |    2 +-
 fs/xfs/xfs_dir2_node.c         |    2 +-
 fs/xfs/xfs_dir2_node.h         |    2 -
 fs/xfs/xfs_dir2_sf.c           |    2 +-
 fs/xfs/xfs_extfree_item.c      |    4 +-
 fs/xfs/xfs_filestream.c        |   42 ++---
 fs/xfs/xfs_filestream.h        |   28 +++-
 fs/xfs/xfs_fsops.c             |   42 +++---
 fs/xfs/xfs_ialloc.c            |   62 +++----
 fs/xfs/xfs_iget.c              |   10 +-
 fs/xfs/xfs_inode.c             |  126 +++----------
 fs/xfs/xfs_inode.h             |   11 +-
 fs/xfs/xfs_inode_item.c        |  129 ++++----------
 fs/xfs/xfs_inode_item.h        |    6 -
 fs/xfs/xfs_itable.c            |   12 +-
 fs/xfs/xfs_log.c               |  383 ++++++++++++++++++++--------------------
 fs/xfs/xfs_log.h               |   19 +--
 fs/xfs/xfs_log_priv.h          |    5 -
 fs/xfs/xfs_log_recover.c       |  222 ++++++++---------------
 fs/xfs/xfs_log_recover.h       |   23 ++--
 fs/xfs/xfs_mount.c             |  183 +++++++++++++++----
 fs/xfs/xfs_mount.h             |   27 ++--
 fs/xfs/xfs_mru_cache.c         |    2 +-
 fs/xfs/xfs_mru_cache.h         |    1 -
 fs/xfs/xfs_quota.h             |    9 +-
 fs/xfs/xfs_rw.c                |  155 ----------------
 fs/xfs/xfs_rw.h                |    4 -
 fs/xfs/xfs_trans.c             |    7 +-
 fs/xfs/xfs_trans.h             |    3 +-
 fs/xfs/xfs_trans_ail.c         |   34 ++--
 fs/xfs/xfs_trans_buf.c         |   27 ++--
 fs/xfs/xfs_types.h             |    4 +-
 fs/xfs/xfs_vnodeops.c          |   33 ++--
 fs/xfs/xfs_vnodeops.h          |   10 +-
 79 files changed, 1667 insertions(+), 1597 deletions(-)


hooks/post-receive
-- 
XFS development tree

<Prev in Thread] Current Thread [Next in Thread>
  • [XFS updates] XFS development tree branch, for-linus, updated. v2.6.33-53-g398007f, xfs <=