[XFS updates] XFS development tree branch, master, updated. v2.6.33-69-gf1f724e
xfs at oss.sgi.com
xfs at oss.sgi.com
Tue Mar 2 19:01:16 CST 2010
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
f1f724e xfs: fix locking for inode cache radix tree tag updates
a14a5ab xfs: remove xfs_ipin/xfs_iunpin
60ec678 xfs: cleanup xfs_iunpin_wait/xfs_iunpin_nowait
d7658d4 xfs: kill xfs_lrw.h
d7e84f4 xfs: factor common xfs_trans_bjoin code
35a8a72 xfs: stop passing opaque handles to xfs_log.c routines
c467c04 xfs: split xfs_bmap_btalloc
f7008d0 xfs: fix xfs_fsblock_t tracing
024910c xfs: fix inode pincount check in fsync
77d7a0c xfs: Non-blocking inode locking in IO completion
66d834e xfs: implement optimized fdatasync
fd3200b xfs: remove wrapper for the fsync file operation
00258e3 xfs: remove wrappers for read/write file operations
dda35b8 xfs: merge xfs_lrw.c into xfs_file.c
b262e5d xfs: fix dquota trace format
a9cc799 xfs: increase readdir buffer size
from 398007f863a4af2b4a5a07219c5a617f1a098115 (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 f1f724e4b523d444c5a598d74505aefa3d6844d2
Author: Christoph Hellwig <hch at infradead.org>
Date: Mon Mar 1 11:30:31 2010 +0000
xfs: fix locking for inode cache radix tree tag updates
The radix-tree code requires it's users to serialize tag updates
against other updates to the tree. While XFS protects tag updates
against each other it does not serialize them against updates of the
tree contents, which can lead to tag corruption. Fix the inode
cache to always take pag_ici_lock in exclusive mode when updating
radix tree tags.
Signed-off-by: Christoph Hellwig <hch at lst.de>
Reported-by: Patrick Schreurs <patrick at news-service.com>
Tested-by: Patrick Schreurs <patrick at news-service.com>
Signed-off-by: Alex Elder <aelder at sgi.com>
commit a14a5ab58f9d783ec3a2a287320fab22e1764813
Author: Christoph Hellwig <hch at lst.de>
Date: Thu Feb 18 12:43:22 2010 +0000
xfs: remove xfs_ipin/xfs_iunpin
Inodes are only pinned/unpinned via the inode item methods, and lots of
code relies on that fact. So remove the separate xfs_ipin/xfs_iunpin
helpers and merge them into their only callers. This also fixes up
various duplicate and/or incorrect comments.
Signed-off-by: Christoph Hellwig <hch at lst.de>
Reviewed-by: Dave Chinner <david at fromorbit.com>
Signed-off-by: Alex Elder <aelder at sgi.com>
commit 60ec678371183f6e0d487e55fe8adbb33816518e
Author: Christoph Hellwig <hch at infradead.org>
Date: Wed Feb 17 19:43:56 2010 +0000
xfs: cleanup xfs_iunpin_wait/xfs_iunpin_nowait
Remove the inode item pointer and ili_last_lsn checks in
__xfs_iunpin_wait as any pinned inode is guaranteed to have them
valid. After this the xfs_iunpin_nowait case is nothing more than a
xfs_log_force_lsn, as we know that the caller has already checked
the pincount.
Make xfs_iunpin_nowait the new low-level routine just doing the log
force and rewrite xfs_iunpin_wait around it.
Signed-off-by: Christoph Hellwig <hch at lst.de>
Reviewed-by: Dave Chinner <david at fromorbit.com>
Signed-off-by: Alex Elder <aelder at sgi.com>
commit d7658d487f4c62983015ba6c99f02dedb3ea97c7
Author: Christoph Hellwig <hch at infradead.org>
Date: Wed Feb 17 19:36:13 2010 +0000
xfs: kill xfs_lrw.h
Move the two declarations to better fitting headers now that
xfs_lrw.c is gone.
Signed-off-by: Christoph Hellwig <hch at lst.de>
Reviewed-by: Dave Chinner <david at fromorbit.com>
Signed-off-by: Alex Elder <aelder at sgi.com>
commit d7e84f413726876c0ec66bbf90770f69841f7663
Author: Christoph Hellwig <hch at infradead.org>
Date: Mon Feb 15 23:35:09 2010 +0000
xfs: factor common xfs_trans_bjoin code
Most of xfs_trans_bjoin is duplicated in xfs_trans_get_buf,
xfs_trans_getsb and xfs_trans_read_buf. Add a new _xfs_trans_bjoin
which can be called by all four functions.
Signed-off-by: Christoph Hellwig <hch at lst.de>
Reviewed-by: Dave Chinner <david at fromorbit.com>
Signed-off-by: Alex Elder <aelder at sgi.com>
commit 35a8a72f064105807b091a21e004893b219c9ed2
Author: Christoph Hellwig <hch at infradead.org>
Date: Mon Feb 15 23:34:54 2010 +0000
xfs: stop passing opaque handles to xfs_log.c routines
Currenly we pass opaque xfs_log_ticket_t handles instead of
struct xlog_ticket pointers, and void pointers instead of
struct xlog_in_core pointers to various log manager functions.
Instead pass properly typed pointers after adding forward
declarations for them to xfs_log.h, and adjust the touched
function prototypes to the standard XFS style while at it.
Signed-off-by: Christoph Hellwig <hch at lst.de>
Reviewed-by: Dave Chinner <david at fromorbit.com>
Signed-off-by: Alex Elder <aelder at sgi.com>
commit c467c049e7e6e8b8fe9f38b13b20a4cf7e03f36b
Author: Christoph Hellwig <hch at infradead.org>
Date: Mon Feb 15 23:34:42 2010 +0000
xfs: split xfs_bmap_btalloc
Split out the nullfb case into a separate function to reduce the stack
footprint and make the code more readable.
Signed-off-by: Christoph Hellwig <hch at lst.de>
Reviewed-by: Dave Chinner <david at fromorbit.com>
Signed-off-by: Alex Elder <aelder at sgi.com>
commit f7008d0aeba21396b3422df135b692ae701bd0c8
Author: Christoph Hellwig <hch at infradead.org>
Date: Mon Feb 15 22:02:19 2010 +0000
xfs: fix xfs_fsblock_t tracing
Using a static buffer in xfs_fmtfsblock means we can corrupt traces if
multiple CPUs hit this code path at the same. Just remove xfs_fmtfsblock
for now and print the block number purely numerical. If we want the
NULLFSBLOCK and NULLSTARTBLOCK formatting back the best way would be
a decoding plugin in the trace-cmd userspace command.
Signed-off-by: Christoph Hellwig <hch at lst.de>
Reviewed-by: Dave Chinner <david at fromorbit.com>
Signed-off-by: Alex Elder <aelder at sgi.com>
commit 024910cbac323ab2e5ad6d7fa7958799b04b9728
Author: Christoph Hellwig <hch at infradead.org>
Date: Wed Feb 17 19:34:57 2010 +0000
xfs: fix inode pincount check in fsync
We need to hold the ilock to check the inode pincount safely. While
we're at it also remove the check for ip->i_itemp->ili_last_lsn, a
pinned inode always has it set.
Signed-off-by: Christoph Hellwig <hch at lst.de>
Reviewed-by: Dave Chinner <david at fromorbit.com>
Signed-off-by: Alex Elder <aelder at sgi.com>
commit 77d7a0c2eeb285c9069e15396703d0cb9690ac50
Author: Dave Chinner <david at fromorbit.com>
Date: Wed Feb 17 05:36:29 2010 +0000
xfs: Non-blocking inode locking in IO completion
The introduction of barriers to loop devices has created a new IO
order completion dependency that XFS does not handle. The loop
device implements barriers using fsync and so turns a log IO in the
XFS filesystem on the loop device into a data IO in the backing
filesystem. That is, the completion of log IOs in the loop
filesystem are now dependent on completion of data IO in the backing
filesystem.
This can cause deadlocks when a flush daemon issues a log force with
an inode locked because the IO completion of IO on the inode is
blocked by the inode lock. This in turn prevents further data IO
completion from occuring on all XFS filesystems on that CPU (due to
the shared nature of the completion queues). This then prevents the
log IO from completing because the log is waiting for data IO
completion as well.
The fix for this new completion order dependency issue is to make
the IO completion inode locking non-blocking. If the inode lock
can't be grabbed, simply requeue the IO completion back to the work
queue so that it can be processed later. This prevents the
completion queue from being blocked and allows data IO completion on
other inodes to proceed, hence avoiding completion order dependent
deadlocks.
Signed-off-by: Dave Chinner <david at fromorbit.com>
Reviewed-by: Christoph Hellwig <hch at lst.de>
Signed-off-by: Alex Elder <aelder at sgi.com>
commit 66d834ea603d61bd90fedad90300ca91c5bba0a3
Author: Christoph Hellwig <hch at infradead.org>
Date: Mon Feb 15 09:44:49 2010 +0000
xfs: implement optimized fdatasync
Allow us to track the difference between timestamp and size updates
by using mark_inode_dirty from the I/O completion code, and checking
the VFS inode flags in xfs_file_fsync.
Signed-off-by: Christoph Hellwig <hch at lst.de>
Reviewed-by: Dave Chinner <david at fromorbit.com>
Signed-off-by: Alex Elder <aelder at sgi.com>
commit fd3200bef7d66ed3924f72c79a465fb7ff85478a
Author: Christoph Hellwig <hch at infradead.org>
Date: Mon Feb 15 09:44:48 2010 +0000
xfs: remove wrapper for the fsync file operation
Currently the fsync file operation is divided into a low-level
routine doing all the work and one that implements the Linux file
operation and does minimal argument wrapping. This is a leftover
from the days of the vnode operations layer and can be removed to
simplify the code a bit, as well as preparing for the implementation
of an optimized fdatasync which needs to look at the Linux inode
state.
Signed-off-by: Christoph Hellwig <hch at lst.de>
Signed-off-by: Alex Elder <aelder at sgi.com>
commit 00258e36b2d33b1b5cef7b489e06c5e0a9df58b5
Author: Christoph Hellwig <hch at infradead.org>
Date: Mon Feb 15 09:44:47 2010 +0000
xfs: remove wrappers for read/write file operations
Currently the aio_read, aio_write, splice_read and splice_write file
operations are divided into a low-level routine doing all the work
and one that implements the Linux file operations and does minimal
argument wrapping. This is a leftover from the days of the vnode
operations layer and can be removed to simplify the code a lot.
Signed-off-by: Christoph Hellwig <hch at lst.de>
Reviewed-by: Dave Chinner <david at fromorbit.com>
Signed-off-by: Alex Elder <aelder at sgi.com>
commit dda35b8f84d209784041bbad47f9e195a08a7527
Author: Christoph Hellwig <hch at infradead.org>
Date: Mon Feb 15 09:44:46 2010 +0000
xfs: merge xfs_lrw.c into xfs_file.c
Currently the code to implement the file operations is split over
two small files. Merge the content of xfs_lrw.c into xfs_file.c to
have it in one place. Note that I haven't done various cleanups
that are possible after this yet, they will follow in the next
patch. Also the function xfs_dev_is_read_only which was in
xfs_lrw.c before really doesn't fit in here at all and was moved to
xfs_mount.c.
Signed-off-by: Christoph Hellwig <hch at lst.de>
Reviewed-by: Dave Chinner <david at fromorbit.com>
Signed-off-by: Alex Elder <aelder at sgi.com>
commit b262e5dfd9ddd2f6d0ef3fa53eb88690f22134a5
Author: Christoph Hellwig <hch at infradead.org>
Date: Sun Feb 14 22:01:45 2010 +0000
xfs: fix dquota trace format
The be32_to_cpu in the TP_printk output breaks automatic parsing of
the trace format by the trace-cmd tools, so we have to move it into
the TP_assign block. While we're at it also fix the format for the
quota limits to more regular and easier parseable.
Signed-off-by: Christoph Hellwig <hch at lst.de>
Reviewed-by: Dave Chinner <david at fromorbit.com>
Signed-off-by: Alex Elder <aelder at sgi.com>
commit a9cc799eca0c798ab5dd8648564fc2025bdd9bd2
Author: Eric Sandeen <sandeen at sandeen.net>
Date: Wed Feb 3 17:50:13 2010 +0000
xfs: increase readdir buffer size
While doing some testing of readdir perf a while back,
I noticed that the buffer size we're using internally is
smaller than what glibc gives us by default. Upping this
size helped a bit, and seems safe.
glibc's __alloc_dir() does:
const size_t default_allocation = (4 * BUFSIZ < sizeof (struct dirent64)
? sizeof (struct dirent64) : 4 * BUFSIZ);
const size_t small_allocation = (BUFSIZ < sizeof (struct dirent64)
? sizeof (struct dirent64) : BUFSIZ);
size_t allocation = default_allocation;
#ifdef _STATBUF_ST_BLKSIZE
if (statp != NULL && default_allocation < statp->st_blksize)
allocation = statp->st_blksize;
#endif
and
#define _G_BUFSIZ 8192
#define _IO_BUFSIZ _G_BUFSIZ
# define BUFSIZ _IO_BUFSIZ
so the default buffer is 4 * 8192 = 32768
(except in the unlikely case of blocks > 32k....)
Signed-off-by: Eric Sandeen <sandeen at sandeen.net>
Reviewed-by: Christoph Hellwig <hch at lst.de>
Signed-off-by: Alex Elder <aelder at sgi.com>
-----------------------------------------------------------------------
Summary of changes:
fs/xfs/Makefile | 1 -
fs/xfs/linux-2.6/xfs_aops.c | 97 +++--
fs/xfs/linux-2.6/xfs_file.c | 854 +++++++++++++++++++++++++++++++++++++++---
fs/xfs/linux-2.6/xfs_iops.c | 10 +
fs/xfs/linux-2.6/xfs_linux.h | 1 -
fs/xfs/linux-2.6/xfs_lrw.c | 796 ---------------------------------------
fs/xfs/linux-2.6/xfs_lrw.h | 29 --
fs/xfs/linux-2.6/xfs_sync.c | 4 +-
fs/xfs/linux-2.6/xfs_trace.c | 16 -
fs/xfs/linux-2.6/xfs_trace.h | 22 +-
fs/xfs/xfs_bmap.c | 220 ++++++-----
fs/xfs/xfs_iget.c | 19 +-
fs/xfs/xfs_inode.c | 68 +---
fs/xfs/xfs_inode.h | 3 +-
fs/xfs/xfs_inode_item.c | 18 +-
fs/xfs/xfs_log.c | 106 +++---
fs/xfs/xfs_log.h | 16 +-
fs/xfs/xfs_mount.c | 20 +
fs/xfs/xfs_mount.h | 2 +
fs/xfs/xfs_trans.c | 2 +-
fs/xfs/xfs_trans.h | 2 +-
fs/xfs/xfs_trans_buf.c | 216 ++++--------
fs/xfs/xfs_vnodeops.c | 107 ------
fs/xfs/xfs_vnodeops.h | 15 +-
24 files changed, 1194 insertions(+), 1450 deletions(-)
delete mode 100644 fs/xfs/linux-2.6/xfs_lrw.c
delete mode 100644 fs/xfs/linux-2.6/xfs_lrw.h
hooks/post-receive
--
XFS development tree
More information about the xfs
mailing list