2.6.30-06725: xfs_fsr: Assertion failed: ip->i_delayed_blks == 0, file: fs/xfs/xfs_bmap.c, line: 5991
Christoph Hellwig
hch at infradead.org
Thu Jun 18 15:51:02 CDT 2009
Did this happens once or multiple times? It seems that for some
reason xfs_flush_pages didn't flush all delalloc space and then
we rightfully hit this assertation.
I really hate the code in xfs_flush_pages with the optimizations it
tries to apply. Can you give the patch below which removes the
optimizations and uses some more core VM code instead of doing our
own thing?
Index: xfs/fs/xfs/linux-2.6/xfs_fs_subr.c
===================================================================
--- xfs.orig/fs/xfs/linux-2.6/xfs_fs_subr.c 2009-06-18 22:48:01.469815342 +0200
+++ xfs/fs/xfs/linux-2.6/xfs_fs_subr.c 2009-06-18 22:49:08.296815058 +0200
@@ -68,20 +68,12 @@ xfs_flush_pages(
uint64_t flags,
int fiopt)
{
- struct address_space *mapping = VFS_I(ip)->i_mapping;
- int ret = 0;
- int ret2;
+ xfs_iflags_clear(ip, XFS_ITRUNCATED);
- if (mapping_tagged(mapping, PAGECACHE_TAG_DIRTY)) {
- xfs_iflags_clear(ip, XFS_ITRUNCATED);
- ret = -filemap_fdatawrite(mapping);
- }
if (flags & XFS_B_ASYNC)
- return ret;
- ret2 = xfs_wait_on_pages(ip, first, last);
- if (!ret)
- ret = ret2;
- return ret;
+ return -filemap_fdatawrite(VFS_I(ip)->i_mapping);
+ else
+ return -filemap_write_and_wait(VFS_I(ip)->i_mapping);
}
int
More information about the xfs
mailing list