On Fri, Jun 14, 2013 at 09:15:04PM +0400, Vlad Bespalov wrote: > i`m running an xfs filesystem over device going offline/online and > sometimes offline may be done in parallel with unmounting > > at some point i got several crashes with null pointer panic in > xlog_iodone: xlog_t structure taken from input buffer is null > > i wonder if the following call path combined with disk online/offline > handling could have led to this crash: > > -------------- > xfs_unmountfs() > xfs_log_unmount_write(mp) > xlog_state_release_iclog(log) > xlog_sync(log, iclog = log->l_iclog) > (bp=iclog->ic_bp) > xlog_bdstrat(bp) > (iclog->ic_state != XLOG_STATE_ERROR ? ) > xfs_buf_iorequest(bp) > xfs_buf_ioend (called with scheduling (*) ) > (queues : bp->b_iodone_work, > callback: xlog_iodone) Which is followed by: if (!(iclog->ic_state == XLOG_STATE_ACTIVE || iclog->ic_state == XLOG_STATE_DIRTY)) { if (!XLOG_FORCED_SHUTDOWN(log)) { xlog_wait(&iclog->ic_force_wait, &log->l_icloglock) Which is supposed to wait for the log IO to complete and hence xlog_iodone() is supposed to have been run by the time this code completes. What kernel are you tesing on? Do you have a script that reproduces it? Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs