From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH] xen-blkback: convert hole punching to discard request on loop devices Date: Tue, 8 Nov 2011 11:26:14 -0500 Message-ID: <20111108162614.GA18361@phenom.dumpdata.com> References: <1320654866-12457-1-git-send-email-lidongyang@novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: <1320654866-12457-1-git-send-email-lidongyang@novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Li Dongyang Cc: lczerner@redhat.com, xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org 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 > --- > 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 > #include > #include > -#include > -#include > -#include > > #include > #include > @@ -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@lists.xensource.com > http://lists.xensource.com/xen-devel