Lines Matching refs:be

37 struct xenbus_device *xen_blkbk_xenbus(struct backend_info *be)  in xen_blkbk_xenbus()  argument
39 return be->dev; in xen_blkbk_xenbus()
57 struct xenbus_device *dev = blkif->be->dev; in blkback_name()
87 if (blkif->be->dev->state == XenbusStateConnected) in xen_update_blkif_status()
91 connect(blkif->be); in xen_update_blkif_status()
92 if (blkif->be->dev->state != XenbusStateConnected) in xen_update_blkif_status()
97 xenbus_dev_error(blkif->be->dev, err, "get blkback dev name"); in xen_update_blkif_status()
103 xenbus_dev_error(blkif->be->dev, err, "block flush"); in xen_update_blkif_status()
114 xenbus_dev_fatal(blkif->be->dev, err, in xen_update_blkif_status()
199 err = xenbus_map_ring_valloc(blkif->be->dev, gref, nr_grefs, in xen_blkif_map()
247 err = bind_interdomain_evtchn_to_irqhandler_lateeoi(blkif->be->dev, in xen_blkif_map()
256 xenbus_unmap_ring_vfree(blkif->be->dev, ring->blk_ring); in xen_blkif_map()
295 xenbus_unmap_ring_vfree(blkif->be->dev, ring->blk_ring); in xen_blkif_disconnect()
343 kfree(blkif->be->mode); in xen_blkif_free()
344 kfree(blkif->be); in xen_blkif_free()
378 struct backend_info *be = dev_get_drvdata(&dev->dev); \
379 struct xen_blkif *blkif = be->blkif; \
427 struct backend_info *be = dev_get_drvdata(&dev->dev); \
433 VBD_SHOW(physical_device, "%x:%x\n", be->major, be->minor);
434 VBD_SHOW(mode, "%s\n", be->mode);
534 struct backend_info *be = dev_get_drvdata(&dev->dev); in xen_blkbk_remove() local
538 if (be->major || be->minor) in xen_blkbk_remove()
541 if (be->backend_watch.node) { in xen_blkbk_remove()
542 unregister_xenbus_watch(&be->backend_watch); in xen_blkbk_remove()
543 kfree(be->backend_watch.node); in xen_blkbk_remove()
544 be->backend_watch.node = NULL; in xen_blkbk_remove()
549 if (be->blkif) { in xen_blkbk_remove()
550 xen_blkif_disconnect(be->blkif); in xen_blkbk_remove()
553 xen_blkif_put(be->blkif); in xen_blkbk_remove()
560 struct backend_info *be, int state) in xen_blkbk_flush_diskcache() argument
562 struct xenbus_device *dev = be->dev; in xen_blkbk_flush_diskcache()
573 static void xen_blkbk_discard(struct xenbus_transaction xbt, struct backend_info *be) in xen_blkbk_discard() argument
575 struct xenbus_device *dev = be->dev; in xen_blkbk_discard()
576 struct xen_blkif *blkif = be->blkif; in xen_blkbk_discard()
579 struct block_device *bdev = be->blkif->vbd.bdev; in xen_blkbk_discard()
617 struct backend_info *be, int state) in xen_blkbk_barrier() argument
619 struct xenbus_device *dev = be->dev; in xen_blkbk_barrier()
639 struct backend_info *be = kzalloc(sizeof(struct backend_info), in xen_blkbk_probe() local
645 if (!be) { in xen_blkbk_probe()
650 be->dev = dev; in xen_blkbk_probe()
651 dev_set_drvdata(&dev->dev, be); in xen_blkbk_probe()
653 be->blkif = xen_blkif_alloc(dev->otherend_id); in xen_blkbk_probe()
654 if (IS_ERR(be->blkif)) { in xen_blkbk_probe()
655 err = PTR_ERR(be->blkif); in xen_blkbk_probe()
656 be->blkif = NULL; in xen_blkbk_probe()
676 be->blkif->be = be; in xen_blkbk_probe()
678 err = xenbus_watch_pathfmt(dev, &be->backend_watch, NULL, in xen_blkbk_probe()
712 struct backend_info *be in backend_changed() local
714 struct xenbus_device *dev = be->dev; in backend_changed()
736 if (be->major | be->minor) { in backend_changed()
737 if (be->major != major || be->minor != minor) in backend_changed()
739 be->major, be->minor, major, minor); in backend_changed()
743 be->mode = xenbus_read(XBT_NIL, dev->nodename, "mode", NULL); in backend_changed()
744 if (IS_ERR(be->mode)) { in backend_changed()
745 err = PTR_ERR(be->mode); in backend_changed()
746 be->mode = NULL; in backend_changed()
760 kfree(be->mode); in backend_changed()
761 be->mode = NULL; in backend_changed()
765 be->major = major; in backend_changed()
766 be->minor = minor; in backend_changed()
768 err = xen_vbd_create(be->blkif, handle, major, minor, in backend_changed()
769 !strchr(be->mode, 'w'), cdrom); in backend_changed()
776 xen_vbd_free(&be->blkif->vbd); in backend_changed()
782 kfree(be->mode); in backend_changed()
783 be->mode = NULL; in backend_changed()
784 be->major = 0; in backend_changed()
785 be->minor = 0; in backend_changed()
788 xen_update_blkif_status(be->blkif); in backend_changed()
798 struct backend_info *be = dev_get_drvdata(&dev->dev); in frontend_changed() local
825 err = xen_blkif_disconnect(be->blkif); in frontend_changed()
831 err = connect_ring(be); in frontend_changed()
837 xen_blkif_disconnect(be->blkif); in frontend_changed()
840 xen_update_blkif_status(be->blkif); in frontend_changed()
848 xen_blkif_disconnect(be->blkif); in frontend_changed()
878 struct backend_info *be = dev_get_drvdata(&dev->dev); in reclaim_memory() local
880 if (!be) in reclaim_memory()
882 be->blkif->buffer_squeeze_end = jiffies + in reclaim_memory()
892 static void connect(struct backend_info *be) in connect() argument
896 struct xenbus_device *dev = be->dev; in connect()
909 xen_blkbk_flush_diskcache(xbt, be, be->blkif->vbd.flush_support); in connect()
911 xen_blkbk_discard(xbt, be); in connect()
913 xen_blkbk_barrier(xbt, be, be->blkif->vbd.flush_support); in connect()
916 be->blkif->vbd.feature_gnt_persistent); in connect()
924 (unsigned long long)vbd_sz(&be->blkif->vbd)); in connect()
933 be->blkif->vbd.type | in connect()
934 (be->blkif->vbd.readonly ? VDISK_READONLY : 0)); in connect()
942 bdev_logical_block_size(be->blkif->vbd.bdev)); in connect()
949 bdev_physical_block_size(be->blkif->vbd.bdev)); in connect()
979 struct xenbus_device *dev = blkif->be->dev; in read_per_ring_refs()
1064 static int connect_ring(struct backend_info *be) in connect_ring() argument
1066 struct xenbus_device *dev = be->dev; in connect_ring()
1067 struct xen_blkif *blkif = be->blkif; in connect_ring()