[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 Wed, Nov 9, 2011 at 12:26 AM, Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> wrote: > 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? I think we still need that flag, as for other type of backing dev, we will figure it out and send back a EOPNOTSUPP. > 2). Rebase this on top #devel/for-jens-3.3 > (git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen.git) no problem > > 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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |