Yes, I meant that generic_perform_write() simply returns EINTR every time when it is called. So do_xino_fwrite() cannot escape from the loop. Â Â static ssize_t do_xino_fwrite(vfs_writef_t func, struct file *file, void *kbuf, Â Â Â Â Â Â Â Â Â Â Â size_t size, loff_t *pos) Â Â { Â Â .. Â Â Â Â do { Â Â Â Â Â Â Â /* cannot escape from this loop */ Â Â Â Â Â Â err = func(file, buf.u, size, pos); Â Â Â Â } while (err == -EAGAIN || err == -EINTR); Â Â .. Â Â } Sorry for my ambiguity. BTW, I tested your patch in my machine, and it seems working well. If modifying 296291cd is not accepted, your patch will be the best solution. Thanks!
2015-12-25 15:16 GMT+09:00 <[1]sf...@users.sourceforge.net>: Akihiro Suda: > However, the bug is a regression caused by commit 296291cd ("mm: make > sendfile(2) killable") to the upstream of Linux kernel. > [2]https://github.com/torvalds/linux/commit/296291cd > This produces infinite -EINTR loop in mm/filemap.c:generic_perform_write(). > Perhaps it can also affect filesystems other than AUFS. Why infinite? generic_perform_write() simply returns EINTR, doesn't it? J. R. Okajima References 1. mailto:sf...@users.sourceforge.net 2. https://github.com/torvalds/linux/commit/296291cd
------------------------------------------------------------------------------