On Wed, Apr 10, 2024 at 11:03:08PM +0800, Zhang Yi wrote: > From: Zhang Yi <yi.zhang@xxxxxxxxxx> > > Online defrag doesn't support iomap path yet, we have to fall back to > buffer_head path for the inode which has been using iomap. Changing > active inode is dangerous, before we start, we must hold the inode lock > and the mapping->invalidate_lock, and writeback all dirty folios and > drop the inode's pagecache. Even then, I don't think this is obviously safe. We went through this with DAX and we couldn't make it work safely. Just return EOPNOTSUPP to the online defrag ioctl if iomap is in use - that avoids all the excitement involved in doing dangerous things like swapping aops structures on actively referenced inodes... -Dave. -- Dave Chinner david@xxxxxxxxxxxxx