I can apply patch 081003fff467ea0e727f66d5d435b4f473a789b3 to the
tree,
but could you verify that it resolves your issue first before I do
that?
Hi Greg,
the attached patch is now working fine for about 30 hours. Before the
XFS was crashing about every 8-12 hours.
Would be nice if someone can have a look at it and include it in 2.6.32.42.
Greets
Stefan
diff -upr orig/linux-2.6.32.40/fs/xfs/linux-2.6/xfs_sync.c linux-2.6.32.40/fs/xfs/linux-2.6/xfs_sync.c
--- orig/linux-2.6.32.40/fs/xfs/linux-2.6/xfs_sync.c 2011-05-10 01:03:02.000000000 +0200
+++ linux-2.6.32.40/fs/xfs/linux-2.6/xfs_sync.c 2011-06-08 10:24:50.074080844 +0200
@@ -711,16 +711,24 @@ xfs_inode_set_reclaim_tag(
}
void
-__xfs_inode_clear_reclaim_tag(
- xfs_mount_t *mp,
+__xfs_inode_clear_reclaim(
xfs_perag_t *pag,
xfs_inode_t *ip)
{
- radix_tree_tag_clear(&pag->pag_ici_root,
- XFS_INO_TO_AGINO(mp, ip->i_ino), XFS_ICI_RECLAIM_TAG);
pag->pag_ici_reclaimable--;
}
+void
+__xfs_inode_clear_reclaim_tag(
+ xfs_mount_t *mp,
+ xfs_perag_t *pag,
+ xfs_inode_t *ip)
+{
+ radix_tree_tag_clear(&pag->pag_ici_root,
+ XFS_INO_TO_AGINO(mp, ip->i_ino), XFS_ICI_RECLAIM_TAG);
+ __xfs_inode_clear_reclaim(pag, ip);
+}
+
STATIC int
xfs_reclaim_inode(
struct xfs_inode *ip,
diff -upr orig/linux-2.6.32.40/fs/xfs/linux-2.6/xfs_sync.h linux-2.6.32.40/fs/xfs/linux-2.6/xfs_sync.h
--- orig/linux-2.6.32.40/fs/xfs/linux-2.6/xfs_sync.h 2011-05-10 01:03:02.000000000 +0200
+++ linux-2.6.32.40/fs/xfs/linux-2.6/xfs_sync.h 2011-06-08 09:44:09.468747065 +0200
@@ -48,6 +48,7 @@ int xfs_reclaim_inodes(struct xfs_mount
void xfs_inode_set_reclaim_tag(struct xfs_inode *ip);
void __xfs_inode_set_reclaim_tag(struct xfs_perag *pag, struct xfs_inode *ip);
+void __xfs_inode_clear_reclaim(struct xfs_perag *pag, struct xfs_inode *ip);
void __xfs_inode_clear_reclaim_tag(struct xfs_mount *mp, struct xfs_perag *pag,
struct xfs_inode *ip);
diff -upr orig/linux-2.6.32.40/fs/xfs/xfs_iget.c linux-2.6.32.40/fs/xfs/xfs_iget.c
--- orig/linux-2.6.32.40/fs/xfs/xfs_iget.c 2011-05-10 01:03:02.000000000 +0200
+++ linux-2.6.32.40/fs/xfs/xfs_iget.c 2011-06-08 09:44:09.471746918 +0200
@@ -529,6 +529,7 @@ xfs_ireclaim(
write_lock(&pag->pag_ici_lock);
if (!radix_tree_delete(&pag->pag_ici_root, agino))
ASSERT(0);
+ __xfs_inode_clear_reclaim(pag, ip);
write_unlock(&pag->pag_ici_lock);
xfs_put_perag(mp, pag);
_______________________________________________
stable mailing list
[email protected]
http://linux.kernel.org/mailman/listinfo/stable