V4 changes: add Acked-by: Joel Becker <jlbec at evilplan.org> V3 changes: - add Cc: stable at vger.kernel.org in the patch header to align with stable rules - add Acked-by: Jeff Moyer <jmoyer at redhat.com> V2 changes: - update the patch header of the first patch to make it more clear. This patch list fixes an issue about ocfs2 aio/dio write process hang. The call trace is like this: @ cat /proc/15913/stack @ [<ffffffffa06e1085>] ocfs2_aiodio_wait+0x85/0xc0 [ocfs2] @ [<ffffffffa06e3e39>] ocfs2_file_aio_write+0x99/0xa0 [ocfs2] @ [<ffffffff811ace97>] aio_rw_vect_retry+0x87/0x150 @ [<ffffffff811aebd1>] aio_run_iocb+0x71/0x170 @ [<ffffffff811af59b>] io_submit_one+0x1ab/0x280 @ [<ffffffff811af77c>] do_io_submit+0x10c/0x1c0 @ [<ffffffff811af840>] sys_io_submit+0x10/0x20 @ [<ffffffff81509b42>] system_call_fastpath+0x16/0x1b @ [<ffffffffffffffff>] 0xffffffffffffffff
Junxiao Bi
2012-Jun-27 09:09 UTC
[Ocfs2-devel] [PATCH v4 1/2] aio: make kiocb->private NUll in init_sync_kiocb()
Ocfs2 uses kiocb.*private as a flag of unsigned long size. In commit a11f7e6 ocfs2: serialize unaligned aio, the unaligned io flag is involved in it to serialize the unaligned aio. As *private is not initialized in init_sync_kiocb() of do_sync_write(), this unaligned io flag may be unexpectly set in an aligned dio. And this will cause OCFS2_I(inode)->ip_unaligned_aio decreased to -1 in ocfs2_dio_end_io(), thus the following unaligned dio will hang forever at ocfs2_aiodio_wait() in ocfs2_file_aio_write(). Signed-off-by: Junxiao Bi <junxiao.bi at oracle.com> Cc: stable at vger.kernel.org Acked-by: Jeff Moyer <jmoyer at redhat.com> Acked-by: Joel Becker <jlbec at evilplan.org> --- include/linux/aio.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/linux/aio.h b/include/linux/aio.h index 2314ad8..b1a520e 100644 --- a/include/linux/aio.h +++ b/include/linux/aio.h @@ -140,6 +140,7 @@ struct kiocb { (x)->ki_dtor = NULL; \ (x)->ki_obj.tsk = tsk; \ (x)->ki_user_data = 0; \ + (x)->private = NULL; \ } while (0) #define AIO_RING_MAGIC 0xa10a10a1 -- 1.7.9.5
Junxiao Bi
2012-Jun-27 09:09 UTC
[Ocfs2-devel] [PATCH v4 2/2] ocfs2: clear unaligned io flag when dio fails
The unaligned io flag is set in the kiocb when an unaligned dio is issued, it should be cleared even when the dio fails, or it may affect the following io which are using the same kiocb. Signed-off-by: Junxiao Bi <junxiao.bi at oracle.com> Cc: stable at vger.kernel.org --- fs/ocfs2/file.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c index 061591a..98513c8 100644 --- a/fs/ocfs2/file.c +++ b/fs/ocfs2/file.c @@ -2422,8 +2422,10 @@ out_dio: unaligned_dio = 0; } - if (unaligned_dio) + if (unaligned_dio) { + ocfs2_iocb_clear_unaligned_aio(iocb); atomic_dec(&OCFS2_I(inode)->ip_unaligned_aio); + } out: if (rw_level != -1) -- 1.7.9.5
Btw, do you want me to pull these through the ocfs2 tree, or are you sending them along yourself? Joel On Wed, Jun 27, 2012 at 05:09:53PM +0800, Junxiao Bi wrote:> > V4 changes: > add Acked-by: Joel Becker <jlbec@evilplan.org> > > V3 changes: > - add Cc: stable@vger.kernel.org in the patch header to align with stable rules > - add Acked-by: Jeff Moyer <jmoyer@redhat.com> > > V2 changes: > - update the patch header of the first patch to make it more clear. > > > This patch list fixes an issue about ocfs2 aio/dio write process hang. > The call trace is like this: > @ cat /proc/15913/stack > @ [<ffffffffa06e1085>] ocfs2_aiodio_wait+0x85/0xc0 [ocfs2] > @ [<ffffffffa06e3e39>] ocfs2_file_aio_write+0x99/0xa0 [ocfs2] > @ [<ffffffff811ace97>] aio_rw_vect_retry+0x87/0x150 > @ [<ffffffff811aebd1>] aio_run_iocb+0x71/0x170 > @ [<ffffffff811af59b>] io_submit_one+0x1ab/0x280 > @ [<ffffffff811af77c>] do_io_submit+0x10c/0x1c0 > @ [<ffffffff811af840>] sys_io_submit+0x10/0x20 > @ [<ffffffff81509b42>] system_call_fastpath+0x16/0x1b > @ [<ffffffffffffffff>] 0xffffffffffffffff > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/-- Joel''s Second Law: If a code change requires additional user setup, it is wrong. http://www.jlbec.org/ jlbec@evilplan.org -- To unsubscribe, send a message with ''unsubscribe linux-aio'' in the body to majordomo@kvack.org. For more info on Linux AIO, see: http://www.kvack.org/aio/ Don''t email: <a href=mailto:"aart@kvack.org">aart@kvack.org</a>
On 06/28/2012 04:34 PM, Joel Becker wrote:> Btw, do you want me to pull these through the ocfs2 tree, or are you > sending them along yourself?Please help pull these, great thanks.> > Joel > > On Wed, Jun 27, 2012 at 05:09:53PM +0800, Junxiao Bi wrote: >> V4 changes: >> add Acked-by: Joel Becker <jlbec at evilplan.org> >> >> V3 changes: >> - add Cc: stable at vger.kernel.org in the patch header to align with stable rules >> - add Acked-by: Jeff Moyer <jmoyer at redhat.com> >> >> V2 changes: >> - update the patch header of the first patch to make it more clear. >> >> >> This patch list fixes an issue about ocfs2 aio/dio write process hang. >> The call trace is like this: >> @ cat /proc/15913/stack >> @ [<ffffffffa06e1085>] ocfs2_aiodio_wait+0x85/0xc0 [ocfs2] >> @ [<ffffffffa06e3e39>] ocfs2_file_aio_write+0x99/0xa0 [ocfs2] >> @ [<ffffffff811ace97>] aio_rw_vect_retry+0x87/0x150 >> @ [<ffffffff811aebd1>] aio_run_iocb+0x71/0x170 >> @ [<ffffffff811af59b>] io_submit_one+0x1ab/0x280 >> @ [<ffffffff811af77c>] do_io_submit+0x10c/0x1c0 >> @ [<ffffffff811af840>] sys_io_submit+0x10/0x20 >> @ [<ffffffff81509b42>] system_call_fastpath+0x16/0x1b >> @ [<ffffffffffffffff>] 0xffffffffffffffff >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in >> the body of a message to majordomo at vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html >> Please read the FAQ at http://www.tux.org/lkml/
Reasonably Related Threads
- [PATCH V3] ocfs2: xattr: fix inlined xattr reflink
- FAILED: patch "[PATCH] ocfs2: fix data corruption after failed write" failed to apply to 5.10-stable tree
- [PATCH] ocfs2: fix data corruption after failed write
- FAILED: patch "[PATCH] ocfs2: fix data corruption after failed write" failed to apply to 4.19-stable tree
- + ocfs2-fix-use-after-free-when-unmounting-read-only-filesystem.patch added to mm-hotfixes-unstable branch