[XFS updates] XFS development tree branch, master, updated. v3.2-rc1-9302-gd060646
xfs at oss.sgi.com
xfs at oss.sgi.com
Tue Jan 17 15:06:59 CST 2012
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
d060646 xfs: cleanup xfs_file_aio_write
5bf1f26 xfs: always return with the iolock held from xfs_file_aio_write_checks
2813d68 xfs: remove the i_new_size field in struct xfs_inode
ce7ae15 xfs: remove the i_size field in struct xfs_inode
f392e63 xfs: replace i_pin_wait with a bit waitqueue
474fce0 xfs: replace i_flock with a sleeping bitlock
49e4c70 xfs: make i_flags an unsigned long
8096b1e xfs: remove the if_ext_max field in struct xfs_ifork
3d2b312 xfs: remove the unused dm_attrs structure
bf322d9 xfs: cleanup xfs_iomap_eof_align_last_fsb
673e8e5 xfs: remove xfs_itruncate_data
from 099469502f62fbe0d7e4f0b83a2f22538367f734 (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 d060646436233912178e6b9e3a7f30a41214220f
Author: Christoph Hellwig <hch at infradead.org>
Date: Sun Dec 18 20:00:14 2011 +0000
xfs: cleanup xfs_file_aio_write
With all the size field updates out of the way xfs_file_aio_write can
be further simplified by pushing all iolock handling into
xfs_file_dio_aio_write and xfs_file_buffered_aio_write and using
the generic generic_write_sync helper for synchronous writes.
Reviewed-by: Dave Chinner <dchinner at redhat.com>
Signed-off-by: Christoph Hellwig <hch at lst.de>
Signed-off-by: Ben Myers <bpm at sgi.com>
commit 5bf1f26227a59b9634e95eb3c7c012b766e5e6a0
Author: Christoph Hellwig <hch at infradead.org>
Date: Sun Dec 18 20:00:13 2011 +0000
xfs: always return with the iolock held from xfs_file_aio_write_checks
While xfs_iunlock is fine with 0 lockflags the calling conventions are much
cleaner if xfs_file_aio_write_checks never returns without the iolock held.
Reviewed-by: Dave Chinner <dchinner at redhat.com>
Signed-off-by: Christoph Hellwig <hch at lst.de>
Signed-off-by: Ben Myers <bpm at sgi.com>
commit 2813d682e8e6a278f94817429afd46b30875bb6e
Author: Christoph Hellwig <hch at infradead.org>
Date: Sun Dec 18 20:00:12 2011 +0000
xfs: remove the i_new_size field in struct xfs_inode
Now that we use the VFS i_size field throughout XFS there is no need for the
i_new_size field any more given that the VFS i_size field gets updated
in ->write_end before unlocking the page, and thus is always uptodate when
writeback could see a page. Removing i_new_size also has the advantage that
we will never have to trim back di_size during a failed buffered write,
given that it never gets updated past i_size.
Note that currently the generic direct I/O code only updates i_size after
calling our end_io handler, which requires a small workaround to make
sure di_size actually makes it to disk. I hope to fix this properly in
the generic code.
A downside is that we lose the support for parallel non-overlapping O_DIRECT
appending writes that recently was added. I don't think keeping the complex
and fragile i_new_size infrastructure for this is a good tradeoff - if we
really care about parallel appending writers we should investigate turning
the iolock into a range lock, which would also allow for parallel
non-overlapping buffered writers.
Signed-off-by: Christoph Hellwig <hch at lst.de>
Reviewed-by: Dave Chinner <dchinner at redhat.com>
Signed-off-by: Ben Myers <bpm at sgi.com>
commit ce7ae151ddada3dbf67301464343c154903166b3
Author: Christoph Hellwig <hch at infradead.org>
Date: Sun Dec 18 20:00:11 2011 +0000
xfs: remove the i_size field in struct xfs_inode
There is no fundamental need to keep an in-memory inode size copy in the XFS
inode. We already have the on-disk value in the dinode, and the separate
in-memory copy that we need for regular files only in the XFS inode.
Remove the xfs_inode i_size field and change the XFS_ISIZE macro to use the
VFS inode i_size field for regular files. Switch code that was directly
accessing the i_size field in the xfs_inode to XFS_ISIZE, or in cases where
we are limited to regular files direct access of the VFS inode i_size field.
This also allows dropping some fairly complicated code in the write path
which dealt with keeping the xfs_inode i_size uptodate with the VFS i_size
that is getting updated inside ->write_end.
Note that we do not bother resetting the VFS i_size when truncating a file
that gets freed to zero as there is no point in doing so because the VFS inode
is no longer in use at this point. Just relax the assert in xfs_ifree to
only check the on-disk size instead.
Reviewed-by: Dave Chinner <dchinner at redhat.com>
Signed-off-by: Christoph Hellwig <hch at lst.de>
Signed-off-by: Ben Myers <bpm at sgi.com>
commit f392e6319a4e9a028b0c8b48f000bb01d660ad53
Author: Christoph Hellwig <hch at infradead.org>
Date: Sun Dec 18 20:00:10 2011 +0000
xfs: replace i_pin_wait with a bit waitqueue
Replace i_pin_wait, which is only used during synchronous inode flushing
with a bit waitqueue. This trades off a much smaller inode against
slightly slower wakeup performance, and saves 12 (32-bit) or 20 (64-bit)
bytes in the XFS inode.
Reviewed-by: Alex Elder <aelder at sgi.com>
Reviewed-by: Dave Chinner <dchinner at redhat.com>
Signed-off-by: Christoph Hellwig <hch at lst.de>
Signed-off-by: Ben Myers <bpm at sgi.com>
commit 474fce067521a40dbacc722e8ba119e81c2d31bf
Author: Christoph Hellwig <hch at infradead.org>
Date: Sun Dec 18 20:00:09 2011 +0000
xfs: replace i_flock with a sleeping bitlock
We almost never block on i_flock, the exception is synchronous inode
flushing. Instead of bloating the inode with a 16/24-byte completion
that we abuse as a semaphore just implement it as a bitlock that uses
a bit waitqueue for the rare sleeping path. This primarily is a
tradeoff between a much smaller inode and a faster non-blocking
path vs faster wakeups, and we are much better off with the former.
A small downside is that we will lose lockdep checking for i_flock, but
given that it's always taken inside the ilock that should be acceptable.
Note that for example the inode writeback locking is implemented in a
very similar way.
Signed-off-by: Christoph Hellwig <hch at lst.de>
Reviewed-by: Alex Elder <aelder at sgi.com>
Signed-off-by: Ben Myers <bpm at sgi.com>
commit 49e4c70e52a2bc2090e5a4e003e2888af21d6a2b
Author: Christoph Hellwig <hch at infradead.org>
Date: Sun Dec 18 20:00:08 2011 +0000
xfs: make i_flags an unsigned long
To be used for bit wakeup i_flags needs to be an unsigned long or we'll
run into trouble on big endian systems. Because of the 1-byte i_update
field right after it this actually causes a fairly large size increase
on its own (4 or 8 bytes), but that increase will be more than offset
by the next two patches.
Signed-off-by: Christoph Hellwig <hch at lst.de>
Reviewed-by: Alex Elder <aelder at sgi.com>
Reviewed-by: Dave Chinner <dchinner at redhat.com>
Signed-off-by: Ben Myers <bpm at sgi.com>
commit 8096b1ebb59b94b3bc6abb6b7d121419e83447ba
Author: Christoph Hellwig <hch at infradead.org>
Date: Sun Dec 18 20:00:07 2011 +0000
xfs: remove the if_ext_max field in struct xfs_ifork
We spent a lot of effort to maintain this field, but it always equals to the
fork size divided by the constant size of an extent. The prime use of it is
to assert that the two stay in sync. Just divide the fork size by the extent
size in the few places that we actually use it and remove the overhead
of maintaining it. Also introduce a few helpers to consolidate the places
where we actually care about the value.
Signed-off-by: Christoph Hellwig <hch at lst.de>
Reviewed-by: Dave Chinner <dchinner at redhat.com>
Signed-off-by: Ben Myers <bpm at sgi.com>
commit 3d2b3129c2c48cf0153e0f2058cf87e4b45ca3ac
Author: Christoph Hellwig <hch at infradead.org>
Date: Sun Dec 18 20:00:06 2011 +0000
xfs: remove the unused dm_attrs structure
.. and the just as dead bhv_desc forward declaration while we're at it.
Signed-off-by: Christoph Hellwig <hch at lst.de>
Reviewed-by: Alex Elder <aelder at sgi.com>
Reviewed-by: Dave Chinner <dchinner at redhat.com>
Signed-off-by: Ben Myers <bpm at sgi.com>
commit bf322d983e540f66517db85b6870017613bb1e8d
Author: Christoph Hellwig <hch at infradead.org>
Date: Sun Dec 18 20:00:05 2011 +0000
xfs: cleanup xfs_iomap_eof_align_last_fsb
Replace the nasty if, else if, elseif condition with more natural C flow
that expressed the logic we want here better.
Signed-off-by: Christoph Hellwig <hch at lst.de>
Reviewed-by: Dave Chinner <dchinner at redhat.com>
Signed-off-by: Ben Myers <bpm at sgi.com>
commit 673e8e597c06eb81954bf21a10f5cce74a1de8f1
Author: Christoph Hellwig <hch at infradead.org>
Date: Sun Dec 18 20:00:04 2011 +0000
xfs: remove xfs_itruncate_data
This wrapper isn't overly useful, not to say rather confusing.
Around the call to xfs_itruncate_extents it does:
- add tracing
- add a few asserts in debug builds
- conditionally update the inode size in two places
- log the inode
Both the tracing and the inode logging can be moved to xfs_itruncate_extents
as they are useful for the attribute fork as well - in fact the attr code
already does an equivalent xfs_trans_log_inode call just after calling
xfs_itruncate_extents. The conditional size updates are a mess, and there
was no reason to do them in two places anyway, as the first one was
conditional on the inode having extents - but without extents we
xfs_itruncate_extents would be a no-op and the placement wouldn't matter
anyway. Instead move the size assignments and the asserts that make sense
to the callers that want it.
As a side effect of this clean up xfs_setattr_size by introducing variables
for the old and new inode size, and moving the size updates into a common
place.
Reviewed-by: Dave Chinner <dchinner at redhat.com>
Signed-off-by: Christoph Hellwig <hch at lst.de>
Signed-off-by: Ben Myers <bpm at sgi.com>
-----------------------------------------------------------------------
Summary of changes:
fs/xfs/xfs_aops.c | 29 ++++---
fs/xfs/xfs_attr.c | 4 -
fs/xfs/xfs_attr_leaf.c | 9 --
fs/xfs/xfs_bmap.c | 116 +++++++++++++---------------
fs/xfs/xfs_dfrag.c | 43 +++++-----
fs/xfs/xfs_file.c | 184 ++++++++++++-------------------------------
fs/xfs/xfs_fs_subr.c | 2 +-
fs/xfs/xfs_iget.c | 24 ++++--
fs/xfs/xfs_inode.c | 193 +++++++++++-----------------------------------
fs/xfs/xfs_inode.h | 114 ++++++++++++++++-----------
fs/xfs/xfs_inode_item.c | 8 +-
fs/xfs/xfs_iomap.c | 46 ++++++------
fs/xfs/xfs_iops.c | 46 +++++++----
fs/xfs/xfs_qm_syscalls.c | 8 ++-
fs/xfs/xfs_super.c | 8 --
fs/xfs/xfs_sync.c | 9 +-
fs/xfs/xfs_trace.h | 29 ++-----
fs/xfs/xfs_vnodeops.c | 44 +++++++----
18 files changed, 374 insertions(+), 542 deletions(-)
hooks/post-receive
--
XFS development tree
More information about the xfs
mailing list