2013-04-06 10:10:10

by Marco Stornelli

[permalink] [raw]
Subject: [PATCH 0/4] 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(-)

--
1.7.3.4
---


2013-04-06 15:22:51

by Al Viro

[permalink] [raw]
Subject: Re: [PATCH 0/4] fsfreeze: from uninterruptible to killable waiting

On Sat, Apr 06, 2013 at 12:03:00PM +0200, Marco Stornelli wrote:
> 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.

sb_start_write() is done _way_ too deep in the call chain in the mainline;
check the changes in -next, please.