On Fri, Jun 03, 2011 at 09:51:53AM +1000, Dave Chinner wrote: [..] > > > Dave, > > > > > > I did a quick test of throttling a direct IO on one file and then > > > doing "truncate -s 40 testfile" on a different file in different > > > cgroup and it seems to work fine. > > > > > > But I seem to be having issues with "sync". Looks like in ext4, if > > > I throttle a DIO, sync does not hang but in XFS it does. I am > > > wondering if XFS is waiting for all inflight DIO to finish before > > > sync completes. > > > > "sync" on XFS seems to be livelocking as long as DIO write operation > > is going on and same does not happen on ext4. > > > > I ran "aio-stress -O aiofile1 -s 4G" and in other window I did "sync" > > and it does not finish untile and unless aio-stress has finished. > > On the other hand ext4 seems to be fine and it does finish earlier. > > On XFS sync waits for the IO count on each inode to return to zero > before continuing. If you are blasting concurrent AIO/DIO at a > file, then it is possible that the IO count never falls to zero. > It's questionable whether this is necessary, but ISTR that the > current behaviour has been there for a long time (though morphed > about a bit in implementation). In this case only a single thread is doing IO continuously. I am assuming if there is a database using XFS, it is not unreasonable to have prolonged periods of continuous IO activity. In that case I think by above design sync will not finish until and unless there is a momentary pause in IO. This does not sound like the best design choice. Thanks Vivek -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html