On Mon, Jun 15, 2015 at 2:41 PM, <jeffm@xxxxxxxx> wrote:
> From: Jeff Mahoney <jeffm@xxxxxxxx>
>
> Initially this will just be the length argument passed to it,
> but the following patches will adjust that to reflect re-alignment
> and skipped blocks.
>
> Signed-off-by: Jeff Mahoney <jeffm@xxxxxxxx>
Reviewed-by: Filipe Manana <fdmanana@xxxxxxxx>
Tested-by: Filipe Manana <fdmanana@xxxxxxxx>
> ---
> fs/btrfs/extent-tree.c | 19 ++++++++++++++-----
> 1 file changed, 14 insertions(+), 5 deletions(-)
>
> diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
> index 0ec3acd..da1145d 100644
> --- a/fs/btrfs/extent-tree.c
> +++ b/fs/btrfs/extent-tree.c
> @@ -1884,10 +1884,17 @@ static int remove_extent_backref(struct btrfs_trans_handle *trans,
> return ret;
> }
>
> -static int btrfs_issue_discard(struct block_device *bdev,
> - u64 start, u64 len)
> +static int btrfs_issue_discard(struct block_device *bdev, u64 start, u64 len,
> + u64 *discarded_bytes)
> {
> - return blkdev_issue_discard(bdev, start >> 9, len >> 9, GFP_NOFS, 0);
> + int ret = 0;
> +
> + *discarded_bytes = 0;
> + ret = blkdev_issue_discard(bdev, start >> 9, len >> 9, GFP_NOFS, 0);
> + if (!ret)
> + *discarded_bytes = len;
> +
> + return ret;
> }
>
> int btrfs_discard_extent(struct btrfs_root *root, u64 bytenr,
> @@ -1908,14 +1915,16 @@ int btrfs_discard_extent(struct btrfs_root *root, u64 bytenr,
>
>
> for (i = 0; i < bbio->num_stripes; i++, stripe++) {
> + u64 bytes;
> if (!stripe->dev->can_discard)
> continue;
>
> ret = btrfs_issue_discard(stripe->dev->bdev,
> stripe->physical,
> - stripe->length);
> + stripe->length,
> + &bytes);
> if (!ret)
> - discarded_bytes += stripe->length;
> + discarded_bytes += bytes;
> else if (ret != -EOPNOTSUPP)
> break; /* Logic errors or -ENOMEM, or -EIO but I don't know how that could happen JDM */
>
> --
> 2.4.3
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
Filipe David Manana,
"Reasonable men adapt themselves to the world.
Unreasonable men adapt the world to themselves.
That's why all progress depends on unreasonable men."
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html