On Tue, 2011-02-15 at 18:07 +0100, Lukas Czerner wrote: > Right now we, are relying on the fact that when we attempt to actually do > the discard, blkdev_issue_discar() returns -EOPNOTSUPP and the user is > informed that the device does not support discard. > > However, in the case where the we do not hit any suitable free extent to > trim in FITRIM code, it will finish without any error. This is very > confusing, because it seems that FITRIM was successful even though the > device does not actually supports discard. > > Solution: Check for the discard support before attempt to search for > free extents. > > Signed-off-by: Lukas Czerner <lczerner@xxxxxxxxxx> > --- > fs/xfs/linux-2.6/xfs_discard.c | 2 ++ > 1 files changed, 2 insertions(+), 0 deletions(-) > > diff --git a/fs/xfs/linux-2.6/xfs_discard.c b/fs/xfs/linux-2.6/xfs_discard.c > index 05201ae..d61611c 100644 > --- a/fs/xfs/linux-2.6/xfs_discard.c > +++ b/fs/xfs/linux-2.6/xfs_discard.c > @@ -152,6 +152,8 @@ xfs_ioc_trim( > > if (!capable(CAP_SYS_ADMIN)) > return -XFS_ERROR(EPERM); > + if (!blk_queue_discard(q)) > + return -XFS_ERROR(EOPNOTSUPP); > if (copy_from_user(&range, urange, sizeof(range))) > return -XFS_ERROR(EFAULT); > Looks good. Reviewed-by: Alex Elder <aelder@xxxxxxx> _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs