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
|