XFS status update for 2009
XFS status update for December 2009
December finally saw the long awaited release of Linux 2.6.32, which for XFS is mostly a bug fix release, with the major changes being various improvement to the sync path, including working around the expectation from the grub boot loader where metadata is supposed to be after a sync() system call. Together with a refactoring of the inode allocator this gives a nice diffstat for this kernel release:
46 files changed, 767 insertions(+), 1048 deletions(-)
In the meantime development for the 2.6.33 has been going strong. The new event tracing code that allows to observe the inner workings of XFS in production systems has finally been merged, with another patch to reduce the size of the tracing code by using new upstream kernel features posted for review. Also a large patch series has been posted which changes per-AG data to be looked up by a radix tree instead of the existing array. This works around possible deadlocks and user after free issues during growfs, and prepares for removing a global (shared) lock from the free space allocators. In addition to that a wide range of fixes has been posted and applied.
Work on the userspace packages has been just as busy. In mkfs.xfs the lazy superblock counter feature has now been enabled by default for the upcoming xfsprogs 3.1.0 release, which will require kernel 2.6.22 for the default mkfs invocation. Also for mkfs.xfs as patch was posted to correct the automatic detection of 4 kilobyte sector drivers which are expected to show up in large quantities the real work soon. The norepair mode in xfs_repair has been enhanced with additional freespace btree correction checks from xfs_db and is now identical to xfs_check in filesystem consistency checking coverage. A temporary file permission problems has been fixed in xfs_fsr, and the libhandle library has been fixed to better deal with symbolic links. In xfs_io a few commands that were added years ago have finally been wired up to actually be usable. And last but not least xfsdump saw a fix to the time stamp handling in the backup format and some usability and documentation improvements to xfsinvutil.
XFS status update for November 2009
November was a relatively slow month for XFS development. The XFS tree that is destined for the Linux 2.6.33 merge window saw a few fixes and cleanups applied to it, and few important fixes still made it into the last Linux 2.6.32 release candidates. A few more patches including a final version of the event tracing support for XFS were posted but not reviewed yet.
On the userspace side there has been a fair amount of xfsprogs activity. The repair speedup patches have finally been merged into the main development branch and a couple of other fixes to the various utilities made it in, too. The xfstests test suite saw another new regression test suite and a build system fix up.
XFS status update for October 2009
In October we saw the Linux 2.6.32 merge window with a major XFS update. This update includes a refactoring of the inode allocator which also allows for speedups for very large filesystems, major sync fixes, updates to the fsync and O_SYNC handling which merge the two code paths into a single and more efficient one, a workaround for the VFS time stamp behavior, and of course various smaller fixes. A couple of additional fixes have been queued up for the next merge window.
On the userspace side there has been a healthy activity on xfsprogs: mkfs can now discard unused sectors on SSDs and thinly provisioned storage devices and use the more generic libblkid for topology information and filesystems detection instead of the older libdisk, and the build system gained some updates to make the source package generation simpler and shared for different package types. A patch has been out to the list but yet committed to add symbol versioning to the libhandle library to make future ABI additions easier. The xfstests package only saw some minor activity with a new test case and small build system fixes.
New minor releases of xfsprogs and xfsdump were tagged but not formally released after additional discussion. Instead a new major xfsprogs release is planned for next month.
XFS status update for September 2009
In September the Linux 2.6.31 kernel was finally released, including another last minute XFS fix for the swapext (defragmentation) compat ioctl handler. The final patch from 2.6.30 to 2.6.31 shows the following impressive diffstat for XFS:
55 files changed, 1476 insertions(+), 2269 deletions(-)
The 2.6.32 merge window started with a large XFS merge that included changes to the inode allocator, and a few smaller fixes. New versions of the sync and time stamp fixes as well as the event tracing support have been posted in September but not yet merged into the XFS development tree and/or mainline.
On the userspace side a large patch series to reduce the memory usage in xfs_repair to acceptable levels was posted, but not yet merged. A new xfs_df shell script to measure use of the on disk space was posted but not yet merged pending some minor review comments and a missing man page. In addition we saw the usual amount of smaller fixes and cleanups.
Also this month Felix Blyakher resigned from his post as XFS maintainer and handed off to Alex Elder.
XFS status update for August 2009
In August the Linux 2.6.31 kernel has still been in the release candidate stage, but a couple of important XFS fixes made it in time for the release, including a fix for the inode cache races with NFS workloads that have plagued us for a long time.
The list saw various patches destined for the Linux 2.6.32 merge window, including a merge of the fsync and O_SYNC handling code to address various issues with the latter, a workaround for deficits in the timestamp handling interface between the VFS and filesystems, a repost of the sync improvements patch series and various smaller patches.
August also saw the minor 3.0.3 release of xfsprogs which collects smaller fixes to the various tools and most importantly a fix to allow xfsprogs to work again on SPARC and other strict alignment handling which regressed a few releases ago. The xfstests repository saw a few new test cases and a various small improvements.
XFS status update for July 2009
As a traditional summer vacation month July has not seen a lot of XFS activity. The mainline 2.6.31 kernel made it to the 5th release candidate but besides a few kernel-wide patches touching XFS the only activity were two small patches fixing a bug in FIEMAP and working around writeback performance problems in the VM.
A few more patches were posted to the list but haven't been merged yet. Two big patch series deal with theoretically possible deadlocks due to locks taken in reclaim contexts, which are now detected by lockdep.
The pace on the userspace side has been slow. There have been a couple of fixes to xfs_repair and xfs_db, and xfstests grew a few more testcases.
XFS status update for June 2009
On June 9th we finally saw the release of Linux 2.6.30. For XFS this release mostly contains the improved ENOSPC handling, but also various smaller bugfixes and lots of cleanups. The code size of XFS decreased again by 500 lines of code in this release.
The Linux 2.6.31 merge opened in the mid of the month and some big XFS changes have been pushed: A removal of the quotaops infrastructure which simplifies the quota implementation, the switch from XFS's own Posix ACL implementation to the generic one shared by various other filesystems which also supports in-memory caching of ACLs and another incremental refactoring of the sync code.
A patch to better track dirty inodes and work around issues in the way the VFS updates the access time stamp on inodes has been reposted and discussed. Another patch to converting the existing XFS tracing infrastructure to use the ftrace even tracer has been posted.
On the userspace side there have been a few updates to xfsprogs, including some repair fixes and a new fallocate command for xfs_io. There were major updates for xfstests: The existing aio-dio-regress testsuite has been merged into xfstests, and various changes went into the tree to make xfstests better suitable for use with other filesystems.
The attr and acl projects which have been traditionally been hosted as part of the XFS userspace utilities have now been split into a separate project maintained by Andreas Gruenbacher, who has been doing most of the work on it, and moved to the Savannah hosting platform.
XFS status update for May 2009
In May Linux 2.6.30 was getting close to be released, and various important XFS fixes made it during the latest release candidates. In the meantime some big patch series to rework the sync code and the inode allocator have been posted for the next merge window.
On the userspace side xfsprogs and xfsdump 3.0.1 were finally released, quickly followed by 3.0.2 releases with updated Debian packaging. After that various small patches that were held back made it into xfsprogs. A patch to add the xfs_reno tool which allows to move inodes around to fit into 32 bit inode number space has been posted which is also one central aspect of future online shrinking support.
There has been major activity on xfstests including adding generic filesystems support to allow running tests that aren't XFS-specific on any Linux filesystems.
XFS status update for April 2009
In April development for Linux 2.6.30 was in full motion. A patchset to correct flushing of delayed allocations with near full filesystems has been committed in early April, as well as various smaller fixes. A patch series to improve the behavior of sys_sync has been posted but is waiting for VFS changes queued for Linux 2.6.31.
On the userspace side xfsprogs and xfsdump 3.0.1 have managed to split their release dates into May again after a lot of last-minute build system updates.
XFS status update for March 2009
Linux 2.6.29 has been released which includes major XFS updates like the new generic btree code, a fully functional 32bit compat ioctl implementation and the new combined XFS and Linux inode. (See previous status reports for more details). A patch series to improve correctness and performance has been posted but not yet applied. Various minor fixes and cleanups have been sent to Linus for 2.6.30 which looks like it will be a minor release for XFS after the big churn in 2.6.29.
On userspace a lot of time has been spent on fixing and improving the build system shared by the various XFS utilities as well as various smaller improvements leading to the xfsprogs and xfsdump 3.0.1 releases which are still outstanding.
XFS status update for February 2009
In February various smaller fixes have been sent to Linus for 2.6.29, including a revert of the faster vmap APIs which don't seem to be quite ready yet on the VM side. At the same time various patches have been queued up for 2.6.30, with another big batch pending. There also has been a repost of the CRC patch series, including support for a new, larger inode core.
SGI released various bits of work in progress from former employees that will be extremely helpful for the future development of XFS, thanks a lot to Mark Goodwin for making this happen.
On the userspace side the long awaited 3.0.0 releases of xfsprogs and xfsdump finally happened early in the month, accompanied by a 2.2.9 release of the dmapi userspace. There have been some issues with packaging so a new minor release might follow soon.
The xfs_irecover tool has been relicensed so that it can be merged into the GPLv2 codebase of xfsprogs, but the actual integration work hasn't happened yet.
Important bits of XFS documentation that have been available on the XFS website in PDF form have been released in the document source form under the Creative Commons license so that they can be updated as a community effort, and checked into a public git tree.
XFS status update for January 2009
January has been an extremely busy month on the userspace front. Many smaller and medium updates went into xfsprogs, xfstests and to a lesser extent xfsdump. xfsprogs and xfsdump are ramping up for getting a 3.0.0 release out in early February which will include the first major re-sync with the kernel code in libxfs, a cleanup of the exported library interfaces and the move of two tools (xfs_fsr and xfs_estimate) from the xfsdump package to xfsprogs. After this the xfsprogs package will contain all tools that use internal libxfs interfaces which fortunately equates to those needed for normal administration. The xfsdump package now only contains the xfsdump/xfsrestore tools needed for backing up and restoring XFS filesystems. In addition it grew a fix to support dump/restore on systems with a 64k page size. A large number of acl/attr package patches was posted to the list, but pending a possible split of these packages from the XFS project these weren't processed yet.
On the kernel side the big excitement in January was an in-memory corruption introduced in the btree refactoring which hit people running 32bit platforms without support for large block devices. This issue was fixed and pushed to the 2.6.29 development tree after a long collaborative debugging effort at linux.conf.au. Besides that about a dozen minor fixes were pushed to 2.6.29 and the first batch of misc patches for the 2.6.30 release cycle was sent out.
At the end of December the SGI group in Melbourne which the previous XFS maintainer and some other developers worked for has been closed down and they will be missed greatly. As a result maintainership has been passed on in a way that has been slightly controversial in the community, and the first patchset of work in progress in Melbourne have been posted to the list to be picked up by others.
The xfs.org wiki has gotten a little facelift on it's front page making it a lot easier to read.