[PATCH for-2.6.33] xfs: flush all log buffers in xlog_dealloc_log
Christoph Hellwig
hch at infradead.org
Mon Feb 1 16:08:13 CST 2010
Make sure all log buffers have made it to disk before we free them.
Otherwise we might reference freed buffers or a NULL mp->m_log from
the I/O completion handlers.
This fixes kernel.org bz #15150.
Signed-off-by: Christoph Hellwig <hch at lst.de>
Reported-by: Ed Cashin <ecashin at coraid.com>
Reported-by: ghani <abdelghani at ezono.com>
Tested-by: ghani <abdelghani at ezono.com>
Index: linux-2.6/fs/xfs/xfs_log.c
===================================================================
--- linux-2.6.orig/fs/xfs/xfs_log.c 2009-11-09 22:09:08.858026060 +0100
+++ linux-2.6/fs/xfs/xfs_log.c 2009-11-09 22:13:13.958255857 +0100
@@ -1602,6 +1602,8 @@ xlog_dealloc_log(xlog_t *log)
xlog_in_core_t *iclog, *next_iclog;
int i;
+ xfs_flush_buftarg(log->l_mp->m_logdev_targp, 1);
+
iclog = log->l_iclog;
for (i=0; i<log->l_iclog_bufs; i++) {
sv_destroy(&iclog->ic_force_wait);
More information about the xfs
mailing list