Skip to content

Commit

Permalink
fs: make cont_expand_zero interruptible
Browse files Browse the repository at this point in the history
This patch makes it possible to kill a process looping in
cont_expand_zero. A process may spend a lot of time in this function, so
it is desirable to be able to kill it.

It happened to me that I wanted to copy a piece data from the disk to a
file. By mistake, I used the "seek" parameter to dd instead of "skip". Due
to the "seek" parameter, dd attempted to extend the file and became stuck
doing so - the only possibility was to reset the machine or wait many
hours until the filesystem runs out of space and cont_expand_zero fails.
We need this patch to be able to terminate the process.

Signed-off-by: Mikulas Patocka <[email protected]>
Cc: [email protected]
Signed-off-by: Al Viro <[email protected]>
  • Loading branch information
Mikulas Patocka authored and Al Viro committed Oct 9, 2014
1 parent c35e024 commit c2ca0fc
Showing 1 changed file with 5 additions and 0 deletions.
5 changes: 5 additions & 0 deletions fs/buffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -2318,6 +2318,11 @@ static int cont_expand_zero(struct file *file, struct address_space *mapping,
err = 0;

balance_dirty_pages_ratelimited(mapping);

if (unlikely(fatal_signal_pending(current))) {
err = -EINTR;
goto out;
}
}

/* page covers the boundary, find the boundary offset */
Expand Down

0 comments on commit c2ca0fc

Please sign in to comment.