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 <lczerner@redhat.com> Reported-by: Zdenek Kabelac <zkabelac@redhat.com> Reviewed-by: Eric Sandeen <sandeen@redhat.com> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
This commit is contained in:
parent
c4cf1acdb1
commit
3c3781951c
@ -132,6 +132,11 @@ next_extent:
|
|||||||
error = xfs_btree_decrement(cur, 0, &i);
|
error = xfs_btree_decrement(cur, 0, &i);
|
||||||
if (error)
|
if (error)
|
||||||
goto out_del_cursor;
|
goto out_del_cursor;
|
||||||
|
|
||||||
|
if (fatal_signal_pending(current)) {
|
||||||
|
error = -ERESTARTSYS;
|
||||||
|
goto out_del_cursor;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
out_del_cursor:
|
out_del_cursor:
|
||||||
@ -196,8 +201,11 @@ xfs_ioc_trim(
|
|||||||
for (agno = start_agno; agno <= end_agno; agno++) {
|
for (agno = start_agno; agno <= end_agno; agno++) {
|
||||||
error = xfs_trim_extents(mp, agno, start, end, minlen,
|
error = xfs_trim_extents(mp, agno, start, end, minlen,
|
||||||
&blocks_trimmed);
|
&blocks_trimmed);
|
||||||
if (error)
|
if (error) {
|
||||||
last_error = error;
|
last_error = error;
|
||||||
|
if (error == -ERESTARTSYS)
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (last_error)
|
if (last_error)
|
||||||
|
Loading…
Reference in New Issue
Block a user