All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] xen-blkback: convert hole punching to discard request on loop devices
@ 2011-11-07  8:34 Li Dongyang
  2011-11-07  9:00 ` Lukas Czerner
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Li Dongyang @ 2011-11-07  8:34 UTC (permalink / raw)
  To: xen-devel; +Cc: lczerner, konrad.wilk

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.

Signed-off-by: Li Dongyang <lidongyang@novell.com>
---
 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

^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2011-11-10  7:51 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-07  8:34 [PATCH] xen-blkback: convert hole punching to discard request on loop devices Li Dongyang
2011-11-07  9:00 ` Lukas Czerner
2011-11-08 16:01 ` Jan Beulich
2011-11-08 16:26 ` Konrad Rzeszutek Wilk
2011-11-09  9:17   ` Li Dongyang
2011-11-10  6:36     ` Li Dongyang
2011-11-10  7:31       ` Lukas Czerner
2011-11-10  7:51         ` Li Dongyang
     [not found] ` <4EB9606B020000780005FA5B@victor.provo.novell.com>
2011-11-09  9:16   ` Li Dongyang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.