Hi guys,
there is a severe bug in OracleLinux R6 U0,U1, and U2.
in the kernel source code fs/ext4/inode.c, there are 3 functions: flush_aio_dio_completed_IO, ext4_end_io_dio, and ext4_end_aio_dio_work, which will manipulate the list i_aio_dio_complete_list of the inode.
but there is NO spinlock to protect the operation on the i_aio_dio_complete_list, therefore there has the risk for the i_aio_dio_complete_list corruption when these functions manipulate i_aio_dio_complete_list concurrently.
When I use ext4 filesystem, using aio(async IO) and dio(direct IO) type, there will occur kernel panic/oops or mutex deadlock.