linux-xfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2 v2] iomap: Waiting for IO in iomap_dio_rw()
@ 2019-10-11 14:14 Jan Kara
  2019-10-11 14:14 ` [PATCH 1/2] iomap: Allow forcing of waiting for running DIO " Jan Kara
  2019-10-11 14:14 ` [PATCH 2/2] xfs: Use iomap_dio_rw_wait() Jan Kara
  0 siblings, 2 replies; 11+ messages in thread
From: Jan Kara @ 2019-10-11 14:14 UTC (permalink / raw)
  To: linux-fsdevel
  Cc: Christoph Hellwig, linux-xfs, darrick.wong, Dave Chinner,
	Matthew Bobrowski, Jan Kara

Hello,

here is new version of the series with small changes people suggested:

Changes since v1:
* The new function argument of iomap_dio_rw() does not get overridden by
 is_sync_kiocb() the caller is responsible for this.

---
Original motivation:

when doing the ext4 conversion of direct IO code to iomap, we found it very
difficult to handle inode extension with what iomap code currently provides.
Ext4 wants to do inode extension as sync IO (so that the whole duration of
IO is protected by inode->i_rwsem), also we need to truncate blocks beyond
end of file in case of error or short write. Now in ->end_io handler we don't
have the information how long originally the write was (to judge whether we
may have allocated more blocks than we actually used) and in ->write_iter
we don't know whether / how much of the IO actually succeeded in case of AIO.

Thinking about it for some time I think iomap code makes it unnecessarily
complex for the filesystem in case it decides it doesn't want to perform AIO
and wants to fall back to good old synchronous IO. In such case it is much
easier for the filesystem if it just gets normal error return from
iomap_dio_rw() and not just -EIOCBQUEUED.

The first patch in the series adds argument to iomap_dio_rw() to wait for IO
completion (internally iomap_dio_rw() already supports this!) and the second
patch converts XFS waiting for unaligned DIO write to this new API.

What do people think?

								Honza 
Previous versions:
Link: http://lore.kernel.org/r/20191009202736.19227-1-jack@suse.cz

^ permalink raw reply	[flat|nested] 11+ messages in thread
* [PATCH 0/2 v3] iomap: Waiting for IO in iomap_dio_rw()
@ 2019-10-14  8:26 Jan Kara
  2019-10-14  8:26 ` [PATCH 1/2] iomap: Allow forcing of waiting for running DIO " Jan Kara
  0 siblings, 1 reply; 11+ messages in thread
From: Jan Kara @ 2019-10-14  8:26 UTC (permalink / raw)
  To: linux-fsdevel
  Cc: Christoph Hellwig, darrick.wong, linux-xfs, Matthew Bobrowski,
	Dave Chinner, Jan Kara

Hello,

here is new version of the series with the small change requested by Darrick.

Changes since v2:
* Changed iomap_dio_rw() to return -EIO in case caller doesn't ask it to wait
  for sync kiocb.

Changes since v1:
* The new function argument of iomap_dio_rw() does not get overridden by
 is_sync_kiocb() the caller is responsible for this.

---
Original motivation:

when doing the ext4 conversion of direct IO code to iomap, we found it very
difficult to handle inode extension with what iomap code currently provides.
Ext4 wants to do inode extension as sync IO (so that the whole duration of
IO is protected by inode->i_rwsem), also we need to truncate blocks beyond
end of file in case of error or short write. Now in ->end_io handler we don't
have the information how long originally the write was (to judge whether we
may have allocated more blocks than we actually used) and in ->write_iter
we don't know whether / how much of the IO actually succeeded in case of AIO.

Thinking about it for some time I think iomap code makes it unnecessarily
complex for the filesystem in case it decides it doesn't want to perform AIO
and wants to fall back to good old synchronous IO. In such case it is much
easier for the filesystem if it just gets normal error return from
iomap_dio_rw() and not just -EIOCBQUEUED.

The first patch in the series adds argument to iomap_dio_rw() to wait for IO
completion (internally iomap_dio_rw() already supports this!) and the second
patch converts XFS waiting for unaligned DIO write to this new API.

								Honza 

Previous versions:
Link: http://lore.kernel.org/r/20191009202736.19227-1-jack@suse.cz
Link: http://lore.kernel.org/r/20191011125520.11697-1-jack@suse.cz

^ permalink raw reply	[flat|nested] 11+ messages in thread
* [PATCH 0/2] iomap: Waiting for IO in iomap_dio_rw()
@ 2019-10-09 20:41 Jan Kara
  2019-10-09 20:41 ` [PATCH 1/2] iomap: Allow forcing of waiting for running DIO " Jan Kara
  0 siblings, 1 reply; 11+ messages in thread
From: Jan Kara @ 2019-10-09 20:41 UTC (permalink / raw)
  To: linux-fsdevel
  Cc: Christoph Hellwig, darrick.wong, linux-xfs, Matthew Bobrowski, Jan Kara

Hello,

when doing the ext4 conversion of direct IO code to iomap, we found it very
difficult to handle inode extension with what iomap code currently provides.
Ext4 wants to do inode extension as sync IO (so that the whole duration of
IO is protected by inode->i_rwsem), also we need to truncate blocks beyond
end of file in case of error or short write. Now in ->end_io handler we don't
have the information how long originally the write was (to judge whether we
may have allocated more blocks than we actually used) and in ->write_iter
we don't know whether / how much of the IO actually succeeded in case of AIO.

Thinking about it for some time I think iomap code makes it unnecessarily
complex for the filesystem in case it decides it doesn't want to perform AIO
and wants to fall back to good old synchronous IO. In such case it is much
easier for the filesystem if it just gets normal error return from
iomap_dio_rw() and not just -EIOCBQUEUED.

The first patch in the series adds argument to iomap_dio_rw() to wait for IO
completion (internally iomap_dio_rw() already supports this!) and the second
patch converts XFS waiting for unaligned DIO write to this new API.

What do people think?

								Honza 

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2019-10-14  8:41 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-11 14:14 [PATCH 0/2 v2] iomap: Waiting for IO in iomap_dio_rw() Jan Kara
2019-10-11 14:14 ` [PATCH 1/2] iomap: Allow forcing of waiting for running DIO " Jan Kara
2019-10-11 15:28   ` Darrick J. Wong
2019-10-11 16:31     ` Jan Kara
2019-10-11 18:04       ` Darrick J. Wong
2019-10-11 21:13         ` Darrick J. Wong
2019-10-11 14:14 ` [PATCH 2/2] xfs: Use iomap_dio_rw_wait() Jan Kara
2019-10-11 15:28   ` Darrick J. Wong
  -- strict thread matches above, loose matches on Subject: below --
2019-10-14  8:26 [PATCH 0/2 v3] iomap: Waiting for IO in iomap_dio_rw() Jan Kara
2019-10-14  8:26 ` [PATCH 1/2] iomap: Allow forcing of waiting for running DIO " Jan Kara
2019-10-14  8:40   ` Christoph Hellwig
2019-10-09 20:41 [PATCH 0/2] iomap: Waiting for IO " Jan Kara
2019-10-09 20:41 ` [PATCH 1/2] iomap: Allow forcing of waiting for running DIO " Jan Kara

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).