On Mon, Nov 12, 2018 at 09:23:48AM -0500, Josef Bacik wrote: > On Thu, Nov 08, 2018 at 10:37:40AM +1100, Dave Chinner wrote: > > xfs: fix transient reference count error in xfs_buf_resubmit_failed_buffers > > > > From: Dave Chinner <dchinner@xxxxxxxxxx> > > > > When retrying a failed inode or dquot buffer, > > xfs_buf_resubmit_failed_buffers() clears all the failed flags from > > the inode/dquot log items. In doing so, it also drops all the > > reference counts on the buffer that the failed log items hold. This > > means it can drop all the active references on the buffer and hence > > free the buffer before it queues it for write again. > > > > Putting the buffer on the delwri queue takes a reference to the > > buffer (so that it hangs around until it has been written and > > completed), but this goes bang if the buffer has already been freed. > > > > Hence we need to add the buffer to the delwri queue before we remove > > the failed flags from the log items attached to the buffer to ensure > > it always remains referenced during the resubmit process. > > > > Reported-by: Josef Bacik <josef@xxxxxxxxxxxxxx> > > Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx> > > Dave, > > Are you planning on sending this along as is? I'm going to throw it in our > kernel if you are happy with it. Thanks, I'm planning to, it's just my stack of fixes is growing faster than I can QA them at the moment. Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx