Al Viro: > The scenario, BTW, looks so: > process A does sb_start_write() (on your upper layer) > process B tries to freeze said upper layer and blocks, waiting for A to finish > process C grabs ->i_mutex in your upper layer > process C does vfs_write(), which blocks, since there's a pending attempt to > freeze > process A tries to grab ->i_mutex held by C and blocks
According to latest mm/filemap.c:generic_file_aio_write(), sb_start_write(inode->i_sb); mutex_lock(&inode->i_mutex); ret = __generic_file_aio_write(iocb, iov, nr_segs, &iocb->ki_pos); mutex_unlock(&inode->i_mutex); ::: sb_end_write(inode->i_sb); Process C would block *BEFORE* i_mutex by sb_start_write()? No? Honestly speaking I didn't pay attention about the freeze feature since I don't use it. I am making aufs to support it now. But I don't know how to test it... J. R. Okajima -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/