On 4/27/17 3:39 AM, Lukas Czerner wrote: > 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(). With this patch, it seems that if it is killed, then nothing is copied back to the user about the number of blocks trimmed before the kill. Is that intentional? I think it could be done in a way that the progress until the kill does get reported, and that might be more useful? Thanks, -Eric > Signed-off-by: Lukas Czerner <lczerner@xxxxxxxxxx> > Reported-by: Zdenek Kabelac <zkabelac@xxxxxxxxxx> > --- > fs/xfs/xfs_discard.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/fs/xfs/xfs_discard.c b/fs/xfs/xfs_discard.c > index d796ffa..6a05d27 100644 > --- a/fs/xfs/xfs_discard.c > +++ b/fs/xfs/xfs_discard.c > @@ -132,6 +132,11 @@ xfs_trim_extents( > 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) > -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html