Possible race between direct IO and JBD?

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Mingming Cao
Date: Friday, April 25, 2008 - 4:38 pm

Hi,

While looking at a bug related to direct IO returns to EIO, after
looking at the code, I found there is a window that
try_to_free_buffers() from direct IO could race with JBD, which holds
the reference to the data buffers before journal_commit_transaction()
ensures the data buffers has reached to the disk.

A little more detail: to prepare for direct IO, generic_file_direct_IO()
calls invalidate_inode_pages2_range() to invalidate the pages in the
cache before performaning direct IO.  invalidate_inode_pages2_range()
tries to free the buffers via try_to free_buffers(), but sometimes it
can't, due to the buffers is possible still on some transaction's
t_sync_datalist or t_locked_list waiting for
journal_commit_transaction() to process it. 

Currently Direct IO simply returns EIO if try_to_free_buffers() finds
the buffer is busy, as it has no clue that JBD is referencing it.

Is this a known issue and expected behavior? Any thoughts?


Mingming

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[RFC] JBD ordered mode rewrite, Jan Kara, (Thu Mar 6, 10:42 am)
Re: [RFC] JBD ordered mode rewrite, Josef Bacik, (Thu Mar 6, 12:05 pm)
Re: [RFC] JBD ordered mode rewrite, Andrew Morton, (Thu Mar 6, 4:53 pm)
Re: [RFC] JBD ordered mode rewrite, Mark Fasheh, (Thu Mar 6, 6:34 pm)
Re: [RFC] JBD ordered mode rewrite, Mingming Cao, (Fri Mar 7, 3:55 am)
Re: [RFC] JBD ordered mode rewrite, Andreas Dilger, (Fri Mar 7, 4:52 pm)
Re: [RFC] JBD ordered mode rewrite, Mingming Cao, (Fri Mar 7, 5:08 pm)
Re: [RFC] JBD ordered mode rewrite, Christoph Hellwig, (Sat Mar 8, 5:14 am)
Re: [RFC] JBD ordered mode rewrite, Jan Kara, (Mon Mar 10, 9:30 am)
Re: [RFC] JBD ordered mode rewrite, Jan Kara, (Mon Mar 10, 10:38 am)
Re: [RFC] JBD ordered mode rewrite, Jan Kara, (Mon Mar 10, 11:00 am)
Re: [RFC] JBD ordered mode rewrite, Jan Kara, (Mon Mar 10, 11:29 am)
Re: [RFC] JBD ordered mode rewrite, Jan Kara, (Mon Mar 10, 12:54 pm)
Re: [RFC] JBD ordered mode rewrite, Andreas Dilger, (Mon Mar 10, 2:37 pm)
Possible race between direct IO and JBD?, Mingming Cao, (Fri Apr 25, 4:38 pm)
Re: Possible race between direct IO and JBD?, Andrew Morton, (Sat Apr 26, 3:41 am)
Re: Possible race between direct IO and JBD?, Jan Kara, (Mon Apr 28, 5:26 am)
Re: Possible race between direct IO and JBD?, Badari Pulavarty, (Mon Apr 28, 10:11 am)
Re: Possible race between direct IO and JBD?, Jan Kara, (Mon Apr 28, 11:09 am)
Re: Possible race between direct IO and JBD?, Mingming Cao, (Mon Apr 28, 12:09 pm)
Re: Possible race between direct IO and JBD?, Jan Kara, (Tue Apr 29, 5:43 am)
Re: Possible race between direct IO and JBD?, Mingming Cao, (Tue Apr 29, 10:49 am)
Re: [PATCH] Fix DIO EIO error caused by race between jbd_c ..., Badari Pulavarty, (Fri May 16, 10:12 am)
Re: [PATCH] Fix DIO EIO error caused by race between jbd_c ..., Badari Pulavarty, (Fri May 16, 10:17 am)
Re: [PATCH][take 5] JBD2: Fix race between free buffer and ..., Aneesh Kumar K.V, (Thu May 29, 11:24 pm)