From: Lukas Czerner Date: Thu, 27 Apr 2017 15:59:36 +0000 (-0700) Subject: xfs: Allow user to kill fstrim process X-Git-Tag: v4.12-rc1~76^2~6 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=3c3781951c9a155a56e5eed567349118374cc315;p=users%2Fjedix%2Flinux-maple.git xfs: Allow user to kill fstrim process fstrim can take really long time on big, slow device or on file system with a lots of allocation groups. Currently there is no way for the user to cancell the operation. This patch makes it possible for the user to kill fstrim pocess by adding the check for fatal_signal_pending() in xfs_trim_extents(). Signed-off-by: Lukas Czerner Reported-by: Zdenek Kabelac Reviewed-by: Eric Sandeen Reviewed-by: Darrick J. Wong Signed-off-by: Darrick J. Wong --- diff --git a/fs/xfs/xfs_discard.c b/fs/xfs/xfs_discard.c index d796ffac72969..6a05d278da64f 100644 --- a/fs/xfs/xfs_discard.c +++ b/fs/xfs/xfs_discard.c @@ -132,6 +132,11 @@ next_extent: error = xfs_btree_decrement(cur, 0, &i); if (error) goto out_del_cursor; + + if (fatal_signal_pending(current)) { + error = -ERESTARTSYS; + goto out_del_cursor; + } } out_del_cursor: @@ -196,8 +201,11 @@ xfs_ioc_trim( for (agno = start_agno; agno <= end_agno; agno++) { error = xfs_trim_extents(mp, agno, start, end, minlen, &blocks_trimmed); - if (error) + if (error) { last_error = error; + if (error == -ERESTARTSYS) + break; + } } if (last_error)