On Thu, Dec 01, 2011 at 04:51:07PM +0900, Kazuya Mio wrote: > dd slept infinitely when fsfeeze failed because of EIO. > To fix this problem, if ->freeze_fs fails, freeze_super() wakes up > the tasks waiting for the filesystem to become unfrozen. > > When s_frozen isn't SB_UNFROZEN in __generic_file_aio_write(), > the function sleeps until FITHAW ioctl wakes up s_wait_unfrozen. > > However, if ->freeze_fs fails, s_frozen is set to SB_UNFROZEN and then > freeze_super() returns an error number. In this case, FITHAW ioctl returns > EINVAL because s_frozen is already SB_UNFROZEN. There is no way to wake up > s_wait_unfrozen, so __generic_file_aio_write() sleeps infinitely. Looks good, Reviewed-by: Christoph Hellwig <hch@xxxxxx> You don't happen to have testcase (e.g. by using dm-fauly or XFS error injection) that we could add to xfstests for this? -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html