On Wed, Aug 28, 2024 at 06:48:48AM +0200, Christoph Hellwig wrote: > On Tue, Aug 27, 2024 at 09:14:16AM -0700, Darrick J. Wong wrote: > > Is there any chance that we could get stuck in a loop here? I > > think it's the case that if SEEK_HOLE returns data_end == start_byte, > > then the next time through the loop, the SEEK_DATA will return something > > that is > start_byte. > > Yes. > > > Unless someone is very rapidly writing and > > punching the page cache? > > > > Hmm but then if *xfs* is punching delalloc then we're we holding the > > iolock so who else could be doing that? > > Yes. It's only the async direct I/O completions that punch without > the lock. Heh, I forgot that I'd asked three questions. Anyway I'm satisfied with the answers I got, so Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx> Though we might have to revisit this for filesystems that don't take i_rwsem exclusively when writing -- is that a problem? I guess if you had two threads both writing and punching the pagecache they could get into trouble, but that might be a case of "if it hurts don't do that". --D