|
@@ -481,10 +481,15 @@ static void xen_blkbk_discard(struct xenbus_transaction xbt, struct backend_info
|
|
|
struct xenbus_device *dev = be->dev;
|
|
|
struct xen_blkif *blkif = be->blkif;
|
|
|
int err;
|
|
|
- int state = 0;
|
|
|
+ int state = 0, discard_enable;
|
|
|
struct block_device *bdev = be->blkif->vbd.bdev;
|
|
|
struct request_queue *q = bdev_get_queue(bdev);
|
|
|
|
|
|
+ err = xenbus_scanf(XBT_NIL, dev->nodename, "discard-enable", "%d",
|
|
|
+ &discard_enable);
|
|
|
+ if (err == 1 && !discard_enable)
|
|
|
+ return;
|
|
|
+
|
|
|
if (blk_queue_discard(q)) {
|
|
|
err = xenbus_printf(xbt, dev->nodename,
|
|
|
"discard-granularity", "%u",
|