On Mon, Mar 16, 2020 at 01:50:41PM -0700, Darrick J. Wong wrote: > On Mon, Mar 16, 2020 at 03:42:24PM +0100, Christoph Hellwig wrote: > > We can just check for a shut down log all the way down in > > xlog_cil_committed instead of passing the parameter. This means a > > slight behavior change in that we now also abort log items if the > > shutdown came in halfway into the I/O completion processing, which > > actually is the right thing to do. > > "if the shutdown came in halfway into the I/O completion..." > > Does this refer to a shutdown triggered by some other thread? As in: > this thread is processing log IO completion; meanwhile someone on the > front end cancels a dirty transaction and causes the fs/log to shut > down; and so this thread now tells all the log items that they were > aborted? Whereas before, the only reason we'd tell the log items that > they were aborted is if the IO completion itself signalled some kind of > error? No, before we also checked for XLOG_STATE_IOERROR in ẋlog_ioend_work. But the I/O end processing drops l_icloglock in various places, in which case another thread could shut down the log as well.