[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] xen-blkback: convert hole punching to discard request on loop devices



On Mon, Nov 07, 2011 at 04:34:26PM +0800, Li Dongyang wrote:
> As of dfaa2ef68e80c378e610e3c8c536f1c239e8d3ef, loop devices support
> discard request now. We could just issue a discard request, and
> the loop driver will punch the hole for us, so we don't need to touch
> the internals of loop device and punch the hole ourselves, Thanks.

Can I ask you to do two things:
 1). Look in whether we can just eliminate the BLKIF_BACKEND_FILE altogether?
 2). Rebase this on top #devel/for-jens-3.3 
(git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen.git)

Thanks!
> 
> Signed-off-by: Li Dongyang <lidongyang@xxxxxxxxxx>
> ---
>  drivers/block/xen-blkback/blkback.c |   21 +++------------------
>  1 files changed, 3 insertions(+), 18 deletions(-)
> 
> diff --git a/drivers/block/xen-blkback/blkback.c 
> b/drivers/block/xen-blkback/blkback.c
> index 15ec4db..ad365a7 100644
> --- a/drivers/block/xen-blkback/blkback.c
> +++ b/drivers/block/xen-blkback/blkback.c
> @@ -39,9 +39,6 @@
>  #include <linux/list.h>
>  #include <linux/delay.h>
>  #include <linux/freezer.h>
> -#include <linux/loop.h>
> -#include <linux/falloc.h>
> -#include <linux/fs.h>
>  
>  #include <xen/events.h>
>  #include <xen/page.h>
> @@ -422,25 +419,13 @@ static void xen_blk_discard(struct xen_blkif *blkif, 
> struct blkif_request *req)
>       int status = BLKIF_RSP_OKAY;
>       struct block_device *bdev = blkif->vbd.bdev;
>  
> -     if (blkif->blk_backend_type == BLKIF_BACKEND_PHY)
> -             /* just forward the discard request */
> +     if (blkif->blk_backend_type == BLKIF_BACKEND_PHY ||
> +         blkif->blk_backend_type == BLKIF_BACKEND_FILE)
>               err = blkdev_issue_discard(bdev,
>                               req->u.discard.sector_number,
>                               req->u.discard.nr_sectors,
>                               GFP_KERNEL, 0);
> -     else if (blkif->blk_backend_type == BLKIF_BACKEND_FILE) {
> -             /* punch a hole in the backing file */
> -             struct loop_device *lo = bdev->bd_disk->private_data;
> -             struct file *file = lo->lo_backing_file;
> -
> -             if (file->f_op->fallocate)
> -                     err = file->f_op->fallocate(file,
> -                             FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE,
> -                             req->u.discard.sector_number << 9,
> -                             req->u.discard.nr_sectors << 9);
> -             else
> -                     err = -EOPNOTSUPP;
> -     } else
> +     else
>               err = -EOPNOTSUPP;
>  
>       if (err == -EOPNOTSUPP) {
> -- 
> 1.7.7
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.