fsfreeze: from uninterruptible to killable waiting
cover fsfreeze: from uninterruptible to killable waiting
Hi all,
with this patch series we try to change the fs freeze behavior in order to sleep in a killable state instead of sleeping in uninterruptible state. The patches are *NOT* tested because but a first review is welcome. The design is simply:
1) Internal fs operations are not changed from fsfreeze point of view, sb_start_intwrite is not changed;
2) sb_start_write and sb_start_pagefault now return a proper error code if the process receive SIGKILL and all the functions must manage this error and return EINTR or VM_FAULT_RETRY.
Marco Stornelli (4):
fsfreeze: add new internal __sb_start_write_wait
fsfreeze: manage kill signal when sb_start_write is called
fsfreeze: manage kill signal when sb_start_pagefault is called
fsfreeze: avoid to return zero in __get_user_pages
fs/btrfs/file.c | 9 +++++++-- fs/btrfs/inode.c | 4 +++- fs/buffer.c | 4 +++- fs/cifs/file.c | 4 +++- fs/ext4/inode.c | 4 +++- fs/ext4/mmp.c | 3 ++- fs/ext4/super.c | 4 +++- fs/f2fs/file.c | 4 +++- fs/fuse/file.c | 4 +++- fs/gfs2/file.c | 4 +++- fs/namespace.c | 8 ++++++-- fs/nilfs2/file.c | 4 +++- fs/ntfs/file.c | 4 +++- fs/ocfs2/file.c | 4 +++- fs/ocfs2/mmap.c | 4 +++- fs/open.c | 8 ++++++-- fs/splice.c | 4 +++- fs/super.c | 47 ++++++++++++++++++++++++++++++++++++++++------- fs/xfs/xfs_file.c | 4 +++- include/linux/fs.h | 19 ++++++++++++------- mm/filemap.c | 11 ++++++++--- mm/filemap_xip.c | 4 +++- mm/memory.c | 2 +- 23 files changed, 127 insertions(+), 40 deletions(-)
Signature · 2 lines
1.7.3.4 ---
Al Viro
maintainerQuoted 7 lines · Marco Stornelli
Hi all,
with this patch series we try to change the fs freeze behavior in order to sleep in a killable state instead of sleeping in uninterruptible state. The patches are *NOT* tested because but a first review is welcome. The design is simply:
Quoted 6 lines
1) Internal fs operations are not changed from fsfreeze point of view,
sb_start_intwriteis not changed;2)
sb_start_writeandsb_start_pagefaultnow return a proper error code if the process receive SIGKILL and all the functions must manage this error and return EINTR orVM_FAULT_RETRY.
sb_start_write() is done _way_ too deep in the call chain in the mainline; check the changes in -next, please.