xfs
[Top] [All Lists]

[XFS updates] XFS development tree branch, master, updated. v2.6.28-rc3-

To: xfs@xxxxxxxxxxx
Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.28-rc3-20848-g8de2bf9
From: xfs@xxxxxxxxxxx
Date: Tue, 7 Apr 2009 16:29:14 -0500
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, master has been updated
  8de2bf9 xfs: remove xfs_flush_space
  153fec4 xfs: flush delayed allcoation blocks on ENOSPC in create
  e43afd7 xfs: block callers of xfs_flush_inodes() correctly
  5825294 xfs: make inode flush at ENOSPC synchronous
  a8d770d xfs: use xfs_sync_inodes() for device flushing
  9d7fef7 xfs: inform the xfsaild of the push target before sleeping
  c626d17 xfs: prevent unwritten extent conversion from blocking I/O completion
  705db3f xfs: fix double free of inode
  a6cb767 xfs: validate log feature fields correctly
      from  1aacc064e029f0017384e463121b98f06d3a2cc3 (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 8de2bf937a6bea8f0f775fd5399ba20c1a0c3d77
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Mon Apr 6 18:49:12 2009 +0200

    xfs: remove xfs_flush_space
    
    The only thing we need to do now when we get an ENOSPC condition during 
delayed
    allocation reservation is flush all the other inodes with delalloc blocks on
    them and retry without EOF preallocation. Remove the unneeded mess that is
    xfs_flush_space() and just call xfs_flush_inodes() directly from
    xfs_iomap_write_delay().
    
    Also, change the location of the retry label to avoid trying to do EOF
    preallocation because we don't want to do that at ENOSPC. This enables us to
    remove the BMAPI_SYNC flag as it is no longer used.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit 153fec43ce5264dfe9f3530b281a2e940b25a0a8
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Mon Apr 6 18:48:30 2009 +0200

    xfs: flush delayed allcoation blocks on ENOSPC in create
    
    If we are creating lots of small files, we can fail to get
    a reservation for inode create earlier than we should due to
    EOF preallocation done during delayed allocation reservation.
    Hence on the first reservation ENOSPC failure flush all the
    delayed allocation blocks out of the system and retry.
    
    This fixes the last commonly triggered spurious ENOSPC issue
    that has been reported.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit e43afd72d2455defd63a3f94f22fa09b586e58ed
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Mon Apr 6 18:47:27 2009 +0200

    xfs: block callers of xfs_flush_inodes() correctly
    
    xfs_flush_inodes() currently uses a magic timeout to wait for
    some inodes to be flushed before returning. This isn't
    really reliable but used to be the best that could be done
    due to deadlock potential of waiting for the entire flush.
    
    Now the inode flush is safe to execute while we hold page
    and inode locks, we can wait for all the inodes to flush
    synchronously. Convert the wait mechanism to a completion
    to do this efficiently. This should remove all remaining
    spurious ENOSPC errors from the delayed allocation reservation
    path.
    
    This is extracted almost line for line from a larger patch
    from Mikulas Patocka.
    
    Signed-off-by: Mikulas Patocka <mpatocka@xxxxxxxxxx>
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit 5825294edd3364cbba6514f70d88debec4f6cec7
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Mon Apr 6 18:45:44 2009 +0200

    xfs: make inode flush at ENOSPC synchronous
    
    When we are writing to a single file and hit ENOSPC, we trigger a background
    flush of the inode and try again.  Because we hold page locks and the 
iolock,
    the flush won't proceed until after we release these locks. This occurs once
    we've given up and ENOSPC has been reported. Hence if this one is the only
    dirty inode in the system, we'll get an ENOSPC prematurely.
    
    To fix this, remove the async flush from the allocation routines and move
    it to the top of the write path where we can do a synchronous flush
    and retry the write again. Only retry once as a second ENOSPC indicates
    that we really are ENOSPC.
    
    This avoids a page cache deadlock when trying to do this flush synchronously
    in the allocation layer that was identified by Mikulas Patocka.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit a8d770d987ee20b59fba6c37d7f0f2a351913c4b
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Mon Apr 6 18:44:54 2009 +0200

    xfs: use xfs_sync_inodes() for device flushing
    
    Currently xfs_device_flush calls sync_blockdev() which is
    a no-op for XFS as all it's metadata is held in a different
    address to the one sync_blockdev() works on.
    
    Call xfs_sync_inodes() instead to flush all the delayed
    allocation blocks out. To do this as efficiently as possible,
    do it via two passes - one to do an async flush of all the
    dirty blocks and a second to wait for all the IO to complete.
    This requires some modification to the xfs-sync_inodes_ag()
    flush code to do efficiently.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit 9d7fef74b23fe57803c5f71fab11630d9ec2cb4b
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Mon Apr 6 18:42:59 2009 +0200

    xfs: inform the xfsaild of the push target before sleeping
    
    When trying to reserve log space, we find the amount of space
    we need, then go to sleep waiting for space. When we are
    woken, we try to push the tail of the log forward to make
    sure we have space available.
    
    Unfortunately, this means that if there is not space available, and
    everyone who needs space goes to sleep there is no-one left to push
    the tail of the log to make space available. Once we have a thread
    waiting for space to become available, the others queue up behind
    it in a FIFO, and none of them push the tail of the log.
    
    This can result in everyone going to sleep in xlog_grant_log_space()
    if the first sleeper races with the last I/O that moves the tail
    of the log forward. With no further I/O tomove the tail of the log,
    there is nothing to wake the sleepers and hence all transactions
    just stop.
    
    Fix this by making sure the xfsaild will create enough space for the
    transaction that is about to sleep by moving the push target far
    enough forwards to ensure that that the curent proceeees will have
    enough space available when it is woken. That is, we push the
    AIL before we go to sleep.
    
    Because we've inserted the log ticket into the queue before we've
    pushed and gone to sleep, subsequent transactions will wait behind
    this one. Hence we are guaranteed to have space available when we
    are woken.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit c626d174cfe38e7f0545d074c299527892cd8c45
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Mon Apr 6 18:42:11 2009 +0200

    xfs: prevent unwritten extent conversion from blocking I/O completion
    
    Unwritten extent conversion can recurse back into the filesystem due
    to memory allocation. Memory reclaim requires I/O completions to be
    processed to allow the callers to make progress. If the I/O
    completion workqueue thread is doing the recursion, then we have a
    deadlock situation.
    
    Move unwritten extent completion into it's own workqueue so it
    doesn't block I/O completions for normal delayed allocation or
    overwrite data.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit 705db3fd4660174a27418bbcb874d209a76044eb
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Mon Apr 6 18:40:17 2009 +0200

    xfs: fix double free of inode
    
    If we fail to initialise the VFS inode in inode_init_always(),
    it will call ->delete_inode internally resulting in the inode being
    freed. Hence we need to delay the call to inode_init_always()
    until after the XFS inode is sufficient set up to handle a
    call to ->delete_inode, and then if that fails do not touch
    the inode again at all as it has been freed.
    
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

commit a6cb767e24b1dbedfcfa8077eab0aa2eab224038
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Mon Apr 6 18:39:27 2009 +0200

    xfs: validate log feature fields correctly
    
    If the large log sector size feature bit is set in the
    superblock by accident (say disk corruption), the then
    fields that are now considered valid are not checked on
    production kernels. The checks are present as ASSERT
    statements so cause a panic on a debug kernel.
    
    Change this so that the fields are validity checked if
    the feature bit is set and abort the log mount if the
    fields do not contain valid values.
    
    Reported-by: Eric Sesterhenn <snakebyte@xxxxxx>
    Signed-off-by: Dave Chinner <david@xxxxxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>

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

Summary of changes:
 fs/xfs/linux-2.6/xfs_aops.c    |   38 +++++++++++---------
 fs/xfs/linux-2.6/xfs_aops.h    |    1 +
 fs/xfs/linux-2.6/xfs_buf.c     |    9 +++++
 fs/xfs/linux-2.6/xfs_fs_subr.c |   14 ++++----
 fs/xfs/linux-2.6/xfs_lrw.c     |   18 +++++++++-
 fs/xfs/linux-2.6/xfs_sync.c    |   78 +++++++++++++++++-----------------------
 fs/xfs/linux-2.6/xfs_sync.h    |    9 +++--
 fs/xfs/xfs_iget.c              |   23 +++++++-----
 fs/xfs/xfs_iomap.c             |   61 ++++++++-----------------------
 fs/xfs/xfs_iomap.h             |    3 +-
 fs/xfs/xfs_log.c               |   78 +++++++++++++++++++++++++---------------
 fs/xfs/xfs_mount.h             |    2 +-
 fs/xfs/xfs_vnodeops.c          |    7 ++++
 13 files changed, 180 insertions(+), 161 deletions(-)


hooks/post-receive
-- 
XFS development tree

<Prev in Thread] Current Thread [Next in Thread>
  • [XFS updates] XFS development tree branch, master, updated. v2.6.28-rc3-20848-g8de2bf9, xfs <=