Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933328AbXJQLED (ORCPT ); Wed, 17 Oct 2007 07:04:03 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1759448AbXJQLDv (ORCPT ); Wed, 17 Oct 2007 07:03:51 -0400 Received: from netops-testserver-3-out.sgi.com ([192.48.171.28]:55232 "EHLO relay.sgi.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1759248AbXJQLDs (ORCPT ); Wed, 17 Oct 2007 07:03:48 -0400 Date: Wed, 17 Oct 2007 21:03:39 +1000 To: torvalds@linux-foundation.org Cc: tes@sgi.com, linux-kernel@vger.kernel.org, xfs@oss.sgi.com, akpm@linux-foundation.org Subject: [GIT PULL] XFS update for 2.6.24-rc1 User-Agent: nail 11.25 7/29/05 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-Id: <20071017110339.D4B3158C38F1@chook.melbourne.sgi.com> From: tes@sgi.com (Tim Shimmin) Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 44633 Lines: 1176 Hi Linus, Please pull from the for-linus branch: git pull git://oss.sgi.com:8090/xfs/xfs-2.6.git for-linus These include changes we have had scheduled for 2.6.24. In particular they include Christoph's (hch's) behavior removal patches. --Tim This will update the following files: fs/xfs/Makefile-linux-2.6 | 3 - fs/xfs/linux-2.6/xfs_aops.c | 57 ++-- fs/xfs/linux-2.6/xfs_aops.h | 2 +- fs/xfs/linux-2.6/xfs_buf.c | 26 ++- fs/xfs/linux-2.6/xfs_export.c | 20 +- fs/xfs/linux-2.6/xfs_file.c | 174 +++------- fs/xfs/linux-2.6/xfs_fs_subr.c | 54 ++-- fs/xfs/linux-2.6/xfs_fs_subr.h | 4 - fs/xfs/linux-2.6/xfs_globals.c | 5 - fs/xfs/linux-2.6/xfs_globals.h | 1 - fs/xfs/linux-2.6/xfs_ioctl.c | 242 +++++++------ fs/xfs/linux-2.6/xfs_ioctl32.c | 8 +- fs/xfs/linux-2.6/xfs_iops.c | 196 ++++------- fs/xfs/linux-2.6/xfs_iops.h | 8 +- fs/xfs/linux-2.6/xfs_linux.h | 3 +- fs/xfs/linux-2.6/xfs_lrw.c | 104 +++---- fs/xfs/linux-2.6/xfs_lrw.h | 23 +-- fs/xfs/linux-2.6/xfs_super.c | 298 ++++++++-------- fs/xfs/linux-2.6/xfs_super.h | 5 +- fs/xfs/linux-2.6/xfs_vfs.c | 327 ------------------ fs/xfs/linux-2.6/xfs_vfs.h | 168 +--------- fs/xfs/linux-2.6/xfs_vnode.c | 100 +++--- fs/xfs/linux-2.6/xfs_vnode.h | 345 ++----------------- fs/xfs/quota/xfs_qm.c | 51 +--- fs/xfs/quota/xfs_qm.h | 6 +- fs/xfs/quota/xfs_qm_bhv.c | 239 ++----------- fs/xfs/quota/xfs_qm_syscalls.c | 21 +- fs/xfs/support/move.c | 51 --- fs/xfs/support/move.h | 70 ---- fs/xfs/xfs_acl.c | 33 +- fs/xfs/xfs_acl.h | 19 +- fs/xfs/xfs_ag.h | 4 + fs/xfs/xfs_attr.c | 50 ++- fs/xfs/xfs_attr.h | 17 +- fs/xfs/xfs_behavior.c | 183 ---------- fs/xfs/xfs_behavior.h | 185 ---------- fs/xfs/xfs_bmap.c | 150 +++++---- fs/xfs/xfs_bmap.h | 4 +- fs/xfs/xfs_bmap_btree.c | 255 +++++--------- fs/xfs/xfs_bmap_btree.h | 68 +--- fs/xfs/xfs_buf_item.c | 1 + fs/xfs/xfs_clnt.h | 1 - fs/xfs/xfs_dfrag.c | 6 +- fs/xfs/xfs_dinode.h | 65 ++-- fs/xfs/xfs_dir2.c | 117 +------ fs/xfs/xfs_dir2.h | 17 - fs/xfs/xfs_dir2_block.c | 64 ++--- fs/xfs/xfs_dir2_block.h | 5 +- fs/xfs/xfs_dir2_data.c | 1 + fs/xfs/xfs_dir2_leaf.c | 76 ++--- fs/xfs/xfs_dir2_leaf.h | 6 +- fs/xfs/xfs_dir2_node.c | 1 + fs/xfs/xfs_dir2_sf.c | 122 +++---- fs/xfs/xfs_dir2_sf.h | 5 +- fs/xfs/xfs_dmapi.h | 17 +- fs/xfs/xfs_dmops.c | 43 ++- fs/xfs/xfs_error.c | 21 +- fs/xfs/xfs_error.h | 5 +- fs/xfs/xfs_extfree_item.c | 1 + fs/xfs/xfs_fsops.c | 17 +- fs/xfs/xfs_ialloc.c | 6 +- fs/xfs/xfs_ialloc.h | 7 +- fs/xfs/xfs_iget.c | 605 +++++++++++--------------------- fs/xfs/xfs_inode.c | 383 +++++++++++---------- fs/xfs/xfs_inode.h | 158 +++++---- fs/xfs/xfs_iocore.c | 4 +- fs/xfs/xfs_iomap.c | 8 - fs/xfs/xfs_iomap.h | 1 - fs/xfs/xfs_itable.c | 78 +++-- fs/xfs/xfs_log.c | 100 +++--- fs/xfs/xfs_log_priv.h | 21 +- fs/xfs/xfs_log_recover.c | 32 +- fs/xfs/xfs_mount.c | 242 +++++++------- fs/xfs/xfs_mount.h | 176 +++++----- fs/xfs/xfs_qmops.c | 40 ++- fs/xfs/xfs_quota.h | 10 +- fs/xfs/xfs_rename.c | 38 +-- fs/xfs/xfs_rw.c | 5 +- fs/xfs/xfs_rw.h | 34 -- fs/xfs/xfs_sb.h | 68 ++++- fs/xfs/xfs_trans.c | 76 ++--- fs/xfs/xfs_trans_ail.c | 1 + fs/xfs/xfs_trans_extfree.c | 1 + fs/xfs/xfs_types.h | 12 - fs/xfs/xfs_utils.c | 9 +- fs/xfs/xfs_utils.h | 6 +- fs/xfs/xfs_vfsops.c | 351 ++++++++++++------- fs/xfs/xfs_vfsops.h | 28 ++ fs/xfs/xfs_vnodeops.c | 745 +++++++++++++--------------------------- fs/xfs/xfs_vnodeops.h | 86 +++++ 90 files changed, 2762 insertions(+), 4739 deletions(-) delete mode 100644 fs/xfs/linux-2.6/xfs_vfs.c delete mode 100644 fs/xfs/support/move.c delete mode 100644 fs/xfs/support/move.h delete mode 100644 fs/xfs/xfs_behavior.c delete mode 100644 fs/xfs/xfs_behavior.h create mode 100644 fs/xfs/xfs_vfsops.h create mode 100644 fs/xfs/xfs_vnodeops.h through these commits: commit 7f015072348a14f16d548be557ee58c5c55df0aa Author: Jeremy Fitzhardinge Date: Wed Oct 17 13:55:03 2007 +1000 [XFS] eagerly remove vmap mappings to avoid upsetting Xen XFS leaves stray mappings around when it vmaps memory to make it virtually contigious. This upsets Xen if one of those pages is being recycled into a pagetable, since it finds an extra writable mapping of the page. This patch solves the problem in a brute force way, by making XFS always eagerly unmap its mappings. SGI-PV: 971902 SGI-Modid: xfs-linux-melb:xfs-kern:29886a Signed-off-by: Jeremy Fitzhardinge Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 6572bc28de150aaa6ca182eaf3e60c199ba48630 Author: Christoph Hellwig Date: Wed Sep 19 15:27:39 2007 +1000 [XFS] simplify validata_fields Stop using xfs_getattr and a onstack bhv_vattr_t just to get three fields from the underlying inode and opencode copying from the inode fields instead. SGI-PV: 970662 SGI-Modid: xfs-linux-melb:xfs-kern:29711a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Tim Shimmin commit 150f29ef2e96392c6ddf24d49289dd40df2783f0 Author: Tim Shimmin Date: Tue Oct 16 16:20:12 2007 +1000 [XFS] no longer using io_vnode, as was remaining from 23 cherrypick Because we cherrypicked SGI-Modid xfs-linux-melb:xfs-kern:29675a and it depended on the sgi mod which removed io_vnode (which was not cherrypicked in 23) it was hand modified. This fixes things back up (to the originial mod) now we have moved on again. Reviewed-by: Lachlan McIlroy Signed-off-by: Tim Shimmin commit 479ba36bbb322a21aa65cc89223c50adf78f4a56 Author: Tim Shimmin Date: Tue Oct 16 15:32:57 2007 +1000 [XFS] Remove STATIC which was missing from prior manual merge Removes STATIC on xfs_freeze function which was not manually applied for SGI-Modid: xfs-linux-melb:xfs-kern:29504a. Reviewed-by: Lachlan McIlroy Signed-off-by: Tim Shimmin commit cd514bdaa87e48b52d4074390043f19ce43ea2c4 Author: Tim Shimmin Date: Mon Oct 15 13:18:59 2007 +1000 [XFS] Put back the QUEUE_ORDERED_NONE test in the barrier check. Put back the QUEUE_ORDERED_NONE test which caused us grief in sles when it was taken out as, IIRC, it allowed md/lvm to be thought of as supporting barriers when they weren't in some configurations. This patch will be reverting what went in as part of a change for the SGI-pv 964544 (SGI-Modid: xfs-linux-melb:xfs-kern:28568a). SGI-PV: 971783 SGI-Modid: xfs-linux-melb:xfs-kern:29882a Signed-off-by: Tim Shimmin Signed-off-by: David Chinner commit bebf963fec2f319d162c18d06b6592f572c9c101 Author: Lachlan McIlroy Date: Mon Oct 15 13:18:02 2007 +1000 [XFS] Turn off XBF_ASYNC flag before re-reading superblock. SGI-PV: 971603 SGI-Modid: xfs-linux-melb:xfs-kern:29871a Signed-off-by: Lachlan McIlroy Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit e893bffd4cf2f000f3058319eea5abeeb1755969 Author: Lachlan McIlroy Date: Fri Oct 12 11:13:35 2007 +1000 [XFS] avoid race in sync_inodes() that can fail to write out all dirty data In xfs_fs_sync_super() treat a sync the same as a filesystem freeze. This is needed to force the log to disk for inodes which are not marked dirty in the Linux inode (the inodes are marked dirty on completion of the log I/O) and so sync_inodes() will not flush them. In xfs_fs_write_inode() a synchronous flush will not get an EAGAIN from xfs_inode_flush() and if an asynchronous flush returns EAGAIN we should pass it on to the caller. If we get an error while flushing the inode then re-dirty it so we can try again later. SGI-PV: 971670 SGI-Modid: xfs-linux-melb:xfs-kern:29860a Signed-off-by: Lachlan McIlroy Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit c2cba57e83dd7d2dda4ec425998b536669632c82 Author: Lachlan McIlroy Date: Fri Oct 12 11:12:20 2007 +1000 [XFS] This fix prevents bulkstat from spinning in an infinite loop. Here 'agino' increments through the inodes in an allocation group. At the end of the innermost 'for' loop it will hold the value of the next inode to look at (ie the first inode in the next cluster/chunk). Assigning 'lastino' to 'agino' resets it to the last inode in the last inode cluster we just looked at. This causes us to look up the very same cluster and examine all the inodes all over again, and again, and again... We also want to set 'lastino' for the cases when we're not interested in the inode so that the next call to bulkstat won't re-examine the same uninteresting inodes. SGI-PV: 971064 SGI-Modid: xfs-linux-melb:xfs-kern:29840a Signed-off-by: Lachlan McIlroy Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 3e5daf05a0c7cce36dc2db41933b14b36d2048dc Author: Christoph Hellwig Date: Thu Oct 11 18:09:12 2007 +1000 [XFS] simplify xfs_create/mknod/symlink prototype Simplify the prototype for xfs_create/xfs_mkdir/xfs_symlink by not passing down a bhv_vattr_t that just hogs stack space. Instead pass down the mode in a mode_t and in case of xfs_create the rdev as a scalar type as well. SGI-PV: 968563 SGI-Modid: xfs-linux-melb:xfs-kern:29794a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Tim Shimmin commit c83bfab1faec9c32297d2079c06adaaaea2650d9 Author: Christoph Hellwig Date: Thu Oct 11 17:47:00 2007 +1000 [XFS] avoid xfs_getattr in XFS_IOC_FSGETXATTR ioctl No need to call into xfs_getattr and put a big bhv_vattr_t on the stack just to get a little information from the XFS inode. Add a helper called xfs_ioc_fsgetxattr instead that deals with retrieving the information in a clean way. SGI-PV: 968563 SGI-Modid: xfs-linux-melb:xfs-kern:29780a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Tim Shimmin commit 859d718279b6e1d6bc27a701db47c1be720b5907 Author: Vlad Apostolov Date: Thu Oct 11 17:44:18 2007 +1000 [XFS] get_bulkall() could return incorrect inode state In the following scenario xfs_bulkstat() returns incorrect stale inode state: 1. File_A is created and its inode synced to disk. 2. File_A is unlinked and doesn't exist anymore. 3. Filesystem sync is invoked. 4. File_B is created. File_B happens to reclaim File_A's inode. 5. xfs_bulkstat() is called and detects File_B but reports the incorrect File_A inode state. Explanation for the incorrect inode state is that inodes are not immediately synced on file create for performance reasons. This leaves the on-disk inode buffer uninitialized (or with old state from a previous generation inode) and this is what xfs_bulkstat() would report. The patch marks the on-disk inode buffer "dirty" on unlink. When the inode is reclaimed (by a new file create), xfs_bulkstat() would filter this inode by the "dirty" mark. Once the inode is flushed to disk, the on-disk buffer "dirty" mark is automatically removed and a following xfs_bulkstat() would return the correct inode state. Marking the on-disk inode buffer "dirty" on unlink is achieved by setting the on-disk di_nlink field to 0. Note that the in-core di_nlink has already been set to 0 and a corresponding transaction logged by xfs_droplink(). This is an exception from the rule that any on-disk inode buffer changes has to be followed by a disk write (inode flush). Synchronizing the in-core to on-disk di_nlink values in advance (before the actual inode flush to disk) should be fine in this case because the inode is already unlinked and it would never change its di_nlink again for this inode generation. SGI-PV: 970842 SGI-Modid: xfs-linux-melb:xfs-kern:29757a Signed-off-by: Vlad Apostolov Signed-off-by: Alex Elder Signed-off-by: David Chinner Signed-off-by: Christoph Hellwig Signed-off-by: Mark Goodwin Signed-off-by: Tim Shimmin commit ba532a980b7dcccf5eebd2cd409a9cb37faa2bb4 Author: Christoph Hellwig Date: Wed Sep 19 15:27:18 2007 +1000 [XFS] Kill unused IOMAP_EOF flag SGI-PV: 968563 SGI-Modid: xfs-linux-melb:xfs-kern:29705a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 574342f4ad450b33bc85ec53210b8aa8bfff2fcf Author: Vlad Apostolov Date: Fri Sep 14 15:23:44 2007 +1000 [XFS] fix when DMAPI mount option processing happens Fix for a regression caused by a recent patch that moved the DMAPI mount option processing inside xfs_parseargs(). The DMAPI mount option used to be processed in the DMAPI module loaded before xfs_parseargs() was invoked. SGI-PV: 970451 SGI-Modid: xfs-linux-melb:xfs-kern:29683a Signed-off-by: Vlad Apostolov Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 5903c4956f7b429f515ba107d9c04bbbe7ce8f9d Author: Lachlan McIlroy Date: Fri Sep 14 15:22:08 2007 +1000 [XFS] ensure file size is logged on synchronous writes Synchronous writes currently log inode changes before syncing pages to disk. Since the file size is updated on I/O completion we wont be writing out the updated file size and if we crash the file will have the wrong size. This change moves the logging after the syncing of the pages to ensure we log the correct file size. SGI-PV: 970334 SGI-Modid: xfs-linux-melb:xfs-kern:29649a Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig Signed-off-by: Tim Shimmin commit cc92e7ac8d96418d99f0c31a9a132e9fccc54553 Author: Christoph Hellwig Date: Thu Aug 30 17:21:54 2007 +1000 [XFS] growlock should be a mutex m_growlock only needs plain binary mutex semantics, so use a struct mutex instead of a semaphore for it. SGI-PV: 968563 SGI-Modid: xfs-linux-melb:xfs-kern:29512a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 0adba5363ccbee073f127feb1d6942e64ee63ab3 Author: Christoph Hellwig Date: Thu Aug 30 17:21:46 2007 +1000 [XFS] replace some large xfs_log_priv.h macros by proper functions ... or in the case of XLOG_TIC_ADD_OPHDR remove a useless macro entirely. SGI-PV: 968563 SGI-Modid: xfs-linux-melb:xfs-kern:29511a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit b267ce9952374c51099f21d6c3a59c78fa0d7586 Author: Christoph Hellwig Date: Thu Aug 30 17:21:30 2007 +1000 [XFS] kill struct bhv_vfs Now that struct bhv_vfs doesn't have any members left we can kill it and go directly from the super_block to the xfs_mount everywhere. SGI-PV: 969608 SGI-Modid: xfs-linux-melb:xfs-kern:29509a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 743944967021f3759d3540b0dfbc7ee7215bc4b0 Author: Christoph Hellwig Date: Thu Aug 30 17:21:22 2007 +1000 [XFS] move syncing related members from struct bhv_vfs to struct xfs_mount SGI-PV: 969608 SGI-Modid: xfs-linux-melb:xfs-kern:29508a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit bd186aa901c183d6e25257711b6c64b42a90dde0 Author: Christoph Hellwig Date: Thu Aug 30 17:21:12 2007 +1000 [XFS] kill the vfs_flags member in struct bhv_vfs All flags are added to xfs_mount's m_flag instead. Note that the 32bit inode flag was duplicated in both of them, but only cleared in the mount when it was not nessecary due to the filesystem beeing small enough. Two flags are still required here - one to indicate the mount option setting, and one to indicate if it applies or not. SGI-PV: 969608 SGI-Modid: xfs-linux-melb:xfs-kern:29507a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 0ce4cfd4f7dde5891d5b3e3c1a28ff7a7b4d36b3 Author: Christoph Hellwig Date: Thu Aug 30 17:20:53 2007 +1000 [XFS] kill the vfs_fsid and vfs_altfsid members in struct bhv_vfs vfs_altfsid was just a pointer to mp->m_fixedfsid so we can trivially replace it with the latter. vfs_fsid also was identical to m_fixedfsid through rather obfuscated ways so we can kill it as well and simply its only user. SGI-PV: 969608 SGI-Modid: xfs-linux-melb:xfs-kern:29506a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 745f691912b700ac98607b525f3c892204c7f12f Author: Christoph Hellwig Date: Thu Aug 30 17:20:39 2007 +1000 [XFS] call common xfs vfs-level helpers directly and remove vfs operations Also remove the now dead behavior code. SGI-PV: 969608 SGI-Modid: xfs-linux-melb:xfs-kern:29505a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 48c872a9f3ec4cdc37801aae9ef16c80026503ea Author: Christoph Hellwig Date: Thu Aug 30 17:20:31 2007 +1000 [XFS] decontaminate vfs operations from behavior details All vfs ops now take struct xfs_mount pointers and the behaviour related glue is split out into methods of its own. SGI-PV: 969608 SGI-Modid: xfs-linux-melb:xfs-kern:29504a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit b09cc77109dbf33463480952de10511a2b67bba6 Author: Christoph Hellwig Date: Thu Aug 30 17:19:57 2007 +1000 [XFS] remove dependency of the quota module on behaviors Mount options are now parsed by the main XFS module and rejected if quota support is not available, and there are some new quota operation for the quotactl syscall and calls to quote in the mount, unmount and sync callchains. SGI-PV: 969608 SGI-Modid: xfs-linux-melb:xfs-kern:29503a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 293688ec420f1160ed93ea4c7948ed5baf8bafa7 Author: Christoph Hellwig Date: Wed Aug 29 11:59:36 2007 +1000 [XFS] remove dependency of the dmapi module on behaviors Mount options are now parsed by the main XFS module and rejected if dmapi support is not available, and there is a new dm operation to send the mount event. SGI-PV: 969608 SGI-Modid: xfs-linux-melb:xfs-kern:29502a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit f541d270dbce375b7bd8cef466bdaf0cff945b45 Author: Christoph Hellwig Date: Wed Aug 29 11:53:22 2007 +1000 [XFS] move freeing the mount structure from xfs_mount_free into the callers In the next patch we need to look at the mount structure until just before it's freed, so we need to be able to free it as the very last thing in xfs_unmount. SGI-PV: 969608 SGI-Modid: xfs-linux-melb:xfs-kern:29501a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 0a74cd1964501fdb577176f14ed3d02b8e148127 Author: Christoph Hellwig Date: Wed Aug 29 11:53:12 2007 +1000 [XFS] kill struct bhv_vnode Now that struct bhv_vnode is empty we can just kill it. Retain bhv_vnode_t as a typedef for struct inode for the time being until all the fallout is cleaned up. SGI-PV: 969608 SGI-Modid: xfs-linux-melb:xfs-kern:29500a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 2aeaa258c0527026228c43148ec6dffdc56bea1c Author: Christoph Hellwig Date: Wed Aug 29 11:46:57 2007 +1000 [XFS] kill the v_number member in struct bhv_vnode It's entirely unused except for ignored arguments in the mrlock initialization, so remove it. SGI-PV: 969608 SGI-Modid: xfs-linux-melb:xfs-kern:29499a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 1543d79c45a374f934f95ca34d87e2eeeb2039b4 Author: Christoph Hellwig Date: Wed Aug 29 11:46:47 2007 +1000 [XFS] move v_trace from bhv_vnode to xfs_inode struct bhv_vnode is on it's way out, so move the trace buffer to the XFS inode. Note that this makes the tracing macros rather misnamed, but this kind of fallout will be fixed up incrementally later on. SGI-PV: 969608 SGI-Modid: xfs-linux-melb:xfs-kern:29498a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit b677c210cec0d6755335ffc01691982c417dd39e Author: Christoph Hellwig Date: Wed Aug 29 11:46:28 2007 +1000 [XFS] move v_iocount from bhv_vnode to xfs_inode struct bhv_vnode is on it's way out, so move the I/O count to the XFS inode. SGI-PV: 969608 SGI-Modid: xfs-linux-melb:xfs-kern:29497a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 09262b4339de5417a10803fbfac277eebb38ca5a Author: Christoph Hellwig Date: Wed Aug 29 11:44:50 2007 +1000 [XFS] Create xfs_iflags_test_and_clear helper function SGI-PV: 969608 SGI-Modid: xfs-linux-melb:xfs-kern:29496a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit b3aea4edc2903fdee34920630b8b2433f6452f02 Author: Christoph Hellwig Date: Wed Aug 29 11:44:37 2007 +1000 [XFS] kill the v_flag member in struct bhv_vnode All flags previously handled at the vnode level are not in the xfs_inode where we already have a flags mechanisms and free bits for flags previously in the vnode. SGI-PV: 969608 SGI-Modid: xfs-linux-melb:xfs-kern:29495a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 2f6f7b3d9b5600e1f6e7622c62ab30f36bd0f57f Author: Christoph Hellwig Date: Wed Aug 29 11:44:18 2007 +1000 [XFS] kill v_vfsp member from struct bhv_vnode We can easily get at the vfsp through the super_block but it will soon be gone anyway. SGI-PV: 969608 SGI-Modid: xfs-linux-melb:xfs-kern:29494a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 739bfb2a7dfa369324f74aad1d020d6e0775e4f0 Author: Christoph Hellwig Date: Wed Aug 29 10:58:01 2007 +1000 [XFS] call common xfs vnode-level helpers directly and remove vnode operations SGI-PV: 969608 SGI-Modid: xfs-linux-melb:xfs-kern:29493a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 993386c19afa53fa54d00c7721e56ba820b3400d Author: Christoph Hellwig Date: Tue Aug 28 16:12:30 2007 +1000 [XFS] decontaminate vnode operations from behavior details All vnode ops now take struct xfs_inode pointers and the behaviour related glue is split out into methods of it's own. This required fixing xfs_create/mkdir/symlink to not mess with the inode pointer but rather use a separate boolean for error handling. Thanks to Dave Chinner for that fix. SGI-PV: 969608 SGI-Modid: xfs-linux-melb:xfs-kern:29492a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit b93bd20cd59eb7ec172f95d08b100fea688d8bcf Author: Vlad Apostolov Date: Tue Aug 28 14:00:28 2007 +1000 [XFS] do not have XFSMNT_IDELETE as default when mounted with XFSMNT_DMAPI XFS inodes are dynamically allocated on demand, rather than being allocated at mkfs time. Chunks of 64 inodes are allocated at once, but they are never freed. Over time, this can lead to filesystem fragmentation, clusters of inodes and the btrees which point at them can be scattered around the system. By freeing clusters as they are emptied, we will reduce fragmentation of the free space after removing files. This in turn will allow us to make better placement decisions when repopulating a filesystem. The XFSMNT_IDELETE mount option enables freeing clusters when they get empty. Unfortunately a side effect of freeing inode clusters is that the inode generation numbers of such inodes would be reset to zero when the cluster is reclaimed. This is a problem in particular for a DMAPI enabled filesystem as the the DMAPI handles need to be unique and persistent in time. An unique DMAPI handle is built with the help of the inode generation number. When the last one is prematurely reset by an inode cluster reclaim, there is a high probability of different generation inodes to end up having identical DMAPI handles. To avoid the problem with identical DMAPI handles, the XFSMNT_IDELETE mount option should be set as default, only if the filesystem is not mounted with XFSMNT_DMAPI. SGI-PV: 969192 SGI-Modid: xfs-linux-melb:xfs-kern:29486a Signed-off-by: Vlad Apostolov Signed-off-by: David Chinner Signed-off-by: Mark Goodwin Signed-off-by: Tim Shimmin commit da353b0d64e070ae7c5342a0d56ec20ae9ef5cfb Author: David Chinner Date: Tue Aug 28 14:00:13 2007 +1000 [XFS] Radix tree based inode caching One of the perpetual scaling problems XFS has is indexing it's incore inodes. We currently uses hashes and the default hash sizes chosen can only ever be a tradeoff between memory consumption and the maximum realistic size of the cache. As a result, anyone who has millions of inodes cached on a filesystem needs to tunes the size of the cache via the ihashsize mount option to allow decent scalability with inode cache operations. A further problem is the separate inode cluster hash, whose size is based on the ihashsize but is smaller, and so under certain conditions (sparse cluster cache population) this can become a limitation long before the inode hash is causing issues. The following patchset removes the inode hash and cluster hash and replaces them with radix trees to avoid the scalability limitations of the hashes. It also reduces the size of the inodes by 3 pointers.... SGI-PV: 969561 SGI-Modid: xfs-linux-melb:xfs-kern:29481a Signed-off-by: David Chinner Signed-off-by: Christoph Hellwig Signed-off-by: Tim Shimmin commit 39cd9f877e63ce7e02cdc7f5dbf1b908451c9532 Author: Christoph Hellwig Date: Tue Aug 28 13:59:21 2007 +1000 [XFS] kill move.[ch] Kill uio related functions and defines now that they're unused. SGI-PV: 968563 SGI-Modid: xfs-linux-melb:xfs-kern:29480a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 804c83c37607efe415774c3a170ad72a789e5992 Author: Christoph Hellwig Date: Tue Aug 28 13:59:03 2007 +1000 [XFS] stop using uio in the readlink code Simplify the readlink code to get rid of the last user of uio. SGI-PV: 968563 SGI-Modid: xfs-linux-melb:xfs-kern:29479a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 051e7cd44ab8f0f7c2958371485b4a1ff64a8d1b Author: Christoph Hellwig Date: Tue Aug 28 13:58:24 2007 +1000 [XFS] use filldir internally Currently xfs has a rather complicated internal scheme to allow for different directory formats in IRIX. This patch rips all code related to this out and pushes useage of the Linux filldir callback into the lowlevel directory code. This does not make the code any less portable because filldir can be used to create dirents of all possible variations (including the IRIX ones as proved by the IRIX binary emulation code under arch/mips/). This patch get rid of an unessecary copy in the readdir path, about 400 lines of code and one of the last two users of the uio structure. This version is updated to deal with dmapi aswell which greatly simplifies the get_dirattrs code. The dmapi part has been tested using the get_dirattrs tools from the xfstest dmapi suite1 with various small and large directories. SGI-PV: 968563 SGI-Modid: xfs-linux-melb:xfs-kern:29478a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 2bdf7cd0baa67608ada1517a281af359faf4c58c Author: Christoph Hellwig Date: Tue Aug 28 13:58:06 2007 +1000 [XFS] superblock endianess annotations Creates a new xfs_dsb_t that is __be annotated and keeps xfs_sb_t for the incore one. xfs_xlatesb is renamed to xfs_sb_to_disk and only handles the incore -> disk conversion. A new helper xfs_sb_from_disk handles the other direction and doesn't need the slightly hacky table-driven approach because we only ever read the full sb from disk. The handling of shared r/o filesystems has been buggy on little endian system and fixing this required shuffling around of some code in that area. SGI-PV: 968563 SGI-Modid: xfs-linux-melb:xfs-kern:29477a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 347d1c01956d567c18afef0cc253eb235cafacd8 Author: Christoph Hellwig Date: Tue Aug 28 13:57:51 2007 +1000 [XFS] dinode endianess annotations Biggest bit is duplicating the dinode structure so we have one annotated for native endianess and one for disk endianess. The other significant change is that xfs_xlate_dinode_core is split into one helper per direction to allow for proper annotations, everything else is trivial. As a sidenode splitting out the incore dinode means we can move it into xfs_inode.h in a later patch and severely improving on the include hell in xfs. SGI-PV: 968563 SGI-Modid: xfs-linux-melb:xfs-kern:29476a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit ddc6d3b32a8a732c343dc225048fae06c129e48a Author: Michal Piotrowski Date: Thu Aug 23 16:20:10 2007 +1000 [XFS] Fix build regression from mod/commit which did cleanup of xfs_bmbt_*set_allf In sgi mod# xfs-linux-melb:xfs-kern:29319a, the variable renaming was not complete and variable 'b' was left unchanged for non-lbd 32 bit machines. SGI-PV: 968563 SGI-Modid: xfs-linux-melb:xfs-kern:29469a Signed-off-by: Michal Piotrowski Signed-off-by: Tim Shimmin commit 948c6d4fd894d9c7f9ad764cedbe443aa866def2 Author: Eric Sandeen Date: Thu Aug 23 16:19:57 2007 +1000 [XFS] optimize dmapi event tests w/o dmapi config SGI-PV: 969372 SGI-Modid: xfs-linux-melb:xfs-kern:29444a Signed-off-by: Eric Sandeen Signed-off-by: Vlad Apostolov Signed-off-by: Tim Shimmin commit eb9df39daf870d6f9e9528f092d506be04ebad2f Author: Christoph Hellwig Date: Thu Aug 16 18:42:07 2007 +1000 [XFS] remove unessecary vfs argument to DM_EVENT_ENABLED SGI-PV: 968690 SGI-Modid: xfs-linux-melb:xfs-kern:29340a Signed-off-by: Christoph Hellwig Signed-off-by: Vlad Apostolov Signed-off-by: Tim Shimmin commit 49ee6c911f0ae5b3a9a04e0589e3265e52f94f53 Author: Jesper Juhl Date: Thu Aug 16 16:25:42 2007 +1000 [XFS] Fix a potential NULL pointer deref in XFS on failed mount. If we fail to open the the log device buftarg, we can fall through to error handling code that fails to check for a NULL log device buftarg before calling xfs_free_buftarg(). This patch fixes the issue by checking mp->m_logdev_targp against NULL in xfs_unmountfs_close() and doing the proper xfs_blkdev_put(logdev); and xfs_blkdev_put(rtdev); on (!mp->m_rtdev_targp) in xfs_mount(). Discovered by the Coverity checker. SGI-PV: 968563 SGI-Modid: xfs-linux-melb:xfs-kern:29328a Signed-off-by: Jesper Juhl Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit dcb3b83febd1028afbc4a32cf7642a6580e349c6 Author: Eric Sandeen Date: Thu Aug 16 16:25:33 2007 +1000 [XFS] clean up xfs_start_flags xfs_start_flags can make use of is_power_of_2 to tidy up the test a little bit. SGI-PV: 968563 SGI-Modid: xfs-linux-melb:xfs-kern:29327a Signed-off-by: Eric Sandeen Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit af3a2e8a3f3055ef269b09433bb28e33a0d1b8c0 Author: Eric Sandeen Date: Thu Aug 16 16:25:23 2007 +1000 [XFS] move linux/log2.h header to xfs_linux.h Generally we try not to directly include linux header files in core xfs code; xfs_linux.h is the spot for that. SGI-PV: 968563 SGI-Modid: xfs-linux-melb:xfs-kern:29326a Signed-off-by: Eric Sandeen Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 6385f4d5579ccada7bd1d9fefbdea5515457b10d Author: Eric Sandeen Date: Thu Aug 16 16:25:10 2007 +1000 [XFS] Remove xfs_physmem Now that nobody's using it, remove xfs_physmem & friends. SGI-PV: 968563 SGI-Modid: xfs-linux-melb:xfs-kern:29325a Signed-off-by: Eric Sandeen Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 425f9ddd534573f58df8e7b633a534fcfc16d44d Author: Eric Sandeen Date: Thu Aug 16 16:24:55 2007 +1000 [XFS] Pick a single default inode cluster size. Remove scaling of inode "clusters" based on machine memory; small cluster cut-point was an unrealistic 32MB and was probably never tested. Removes another user of xfs_physmem. SGI-PV: 968563 SGI-Modid: xfs-linux-melb:xfs-kern:29324a Signed-off-by: Eric Sandeen Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 1cb51258758d725028e9ee9688d462de125a053d Author: Eric Sandeen Date: Thu Aug 16 16:24:43 2007 +1000 [XFS] choose single default logbuf count & size Remove sizing of logbuf size & count based on physical memory; this was never a very good gauge as it's looking at global memory, but deciding on sizing per-filesystem; no account is made of the total number of filesystems, for example. For now just take the largest "default" case, as was set for machines with >400MB - 8 x 32k buffers. This can always be tuned higher or lower with mount options if necessary. Removes one more user of xfs_physmem. SGI-PV: 968563 SGI-Modid: xfs-linux-melb:xfs-kern:29323a Signed-off-by: Eric Sandeen Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 40906630f18fdf5ac27f5928c20f76eeac8fb0f0 Author: Eric Sandeen Date: Thu Aug 16 16:24:31 2007 +1000 [XFS] Remove m_nreadaheads m_nreadaheads in the mount struct is never used; remove it and the various macros assigned to it. Also remove a couple other unused macros in the same areas. Removes one user of xfs_physmem. SGI-PV: 968563 SGI-Modid: xfs-linux-melb:xfs-kern:29322a Signed-off-by: Eric Sandeen Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit cd8b0a97bd9216578a44a9bf82188cd901295964 Author: Christoph Hellwig Date: Thu Aug 16 16:24:15 2007 +1000 [XFS] endianess annotations for xfs_bmbt_rec_t SGI-PV: 968563 SGI-Modid: xfs-linux-melb:xfs-kern:29321a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit e05596643d4bb5ab7d813d1ac5724178ca4c7134 Author: Christoph Hellwig Date: Thu Aug 16 16:24:02 2007 +1000 [XFS] cleanup defintions of BMBT_*BITLEN macros The BMBT_*BITLEN are currently defined in a complicated way depending on XFS_NATIVE_HOST. But if all the macros are expanded they (obviously) expand to the same value for both cases. This patch defines the macros in the most simple way and updates the comment describing them to remove outdated bits. SGI-PV: 968563 SGI-Modid: xfs-linux-melb:xfs-kern:29320a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 8cba43447e7a843cd446a73baa91fe686f01e565 Author: Christoph Hellwig Date: Thu Aug 16 16:23:53 2007 +1000 [XFS] clean up xfs_bmbt_set_all/xfs_bmbt_disk_set_all xfs_bmbt_set_all/xfs_bmbt_disk_set_all are identical to xfs_bmbt_set_allf/xfs_bmbt_disk_set_allf except that the former take a xfs_bmbt_irec_t and the latter take the individual extent fields as scalar values. This patch reimplements xfs_bmbt_set_all/xfs_bmbt_disk_set_all as trivial wrappers around xfs_bmbt_set_allf/xfs_bmbt_disk_set_allf and cleans up the variable naming in xfs_bmbt_set_allf/xfs_bmbt_disk_set_allf to have some meaning instead of one char variable names. SGI-PV: 968563 SGI-Modid: xfs-linux-melb:xfs-kern:29319a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit a6f64d4aea0d0c8483e910c7dd2d1ee48e42245c Author: Christoph Hellwig Date: Thu Aug 16 16:23:40 2007 +1000 [XFS] split ondisk vs incore versions of xfs_bmbt_rec_t currently xfs_bmbt_rec_t is used both for ondisk extents as well as host-endian ones. This patch adds a new xfs_bmbt_rec_host_t for the native endian ones and cleans up the fallout. There have been various endianess issues in the tracing / debug printf code that are fixed by this patch. SGI-PV: 968563 SGI-Modid: xfs-linux-melb:xfs-kern:29318a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit d580ef6eaae6eaaef1e06c7d689fc9949faee9da Author: Christoph Hellwig Date: Thu Aug 16 16:23:11 2007 +1000 [XFS] remove confusing INT_ comments in xfs_bmap_btree.c SGI-PV: 968563 SGI-Modid: xfs-linux-melb:xfs-kern:29317a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 3bacbcd8830f89fc527f5c7dc13f24d0ce692980 Author: Vlad Apostolov Date: Thu Aug 16 15:20:25 2007 +1000 [XFS] hole not shown when file is created with resvsp SGI-PV: 967674 SGI-Modid: xfs-linux-melb:xfs-kern:29211a Signed-off-by: Vlad Apostolov Signed-off-by: David Chinner Signed-off-by: Tim Shimmin commit 0bfefc46dc028df60120acdb92062169c9328769 Author: David Chinner Date: Mon May 14 18:24:23 2007 +1000 [XFS] Barriers need to be dynamically checked and switched off If the underlying block device suddenly stops supporting barriers, we need to handle the -EOPNOTSUPP error in a sane manner rather than shutting down the filesystem. If we get this error, clear the barrier flag, reissue the I/O, and tell the world bad things are occurring. SGI-PV: 964544 SGI-Modid: xfs-linux-melb:xfs-kern:28568a Signed-off-by: David Chinner Signed-off-by: Christoph Hellwig Signed-off-by: Tim Shimmin - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/