Lines Matching full:be
38 struct xenbus_device *xen_blkbk_xenbus(struct backend_info *be) in xen_blkbk_xenbus() argument
40 return be->dev; in xen_blkbk_xenbus()
58 struct xenbus_device *dev = blkif->be->dev; in blkback_name()
88 if (blkif->be->dev->state == XenbusStateConnected) in xen_update_blkif_status()
92 connect(blkif->be); in xen_update_blkif_status()
93 if (blkif->be->dev->state != XenbusStateConnected) in xen_update_blkif_status()
98 xenbus_dev_error(blkif->be->dev, err, "get blkback dev name"); in xen_update_blkif_status()
104 xenbus_dev_error(blkif->be->dev, err, "block flush"); in xen_update_blkif_status()
115 xenbus_dev_fatal(blkif->be->dev, err, in xen_update_blkif_status()
180 * Because freeing back to the cache may be deferred, it is not in xen_blkif_alloc()
205 err = xenbus_map_ring_valloc(blkif->be->dev, gref, nr_grefs, in xen_blkif_map()
253 err = bind_interdomain_evtchn_to_irqhandler_lateeoi(blkif->be->dev, in xen_blkif_map()
262 xenbus_unmap_ring_vfree(blkif->be->dev, ring->blk_ring); in xen_blkif_map()
301 xenbus_unmap_ring_vfree(blkif->be->dev, ring->blk_ring); in xen_blkif_disconnect()
349 kfree(blkif->be->mode); in xen_blkif_free()
350 kfree(blkif->be); in xen_blkif_free()
384 struct backend_info *be = dev_get_drvdata(&dev->dev); \
385 struct xen_blkif *blkif = be->blkif; \
433 struct backend_info *be = dev_get_drvdata(&dev->dev); \
439 VBD_SHOW(physical_device, "%x:%x\n", be->major, be->minor);
440 VBD_SHOW(mode, "%s\n", be->mode);
498 pr_warn("xen_vbd_create: device %08x could not be opened\n", in xen_vbd_create()
529 struct backend_info *be = dev_get_drvdata(&dev->dev); in xen_blkbk_remove() local
533 if (be->major || be->minor) in xen_blkbk_remove()
536 if (be->backend_watch.node) { in xen_blkbk_remove()
537 unregister_xenbus_watch(&be->backend_watch); in xen_blkbk_remove()
538 kfree(be->backend_watch.node); in xen_blkbk_remove()
539 be->backend_watch.node = NULL; in xen_blkbk_remove()
544 if (be->blkif) { in xen_blkbk_remove()
545 xen_blkif_disconnect(be->blkif); in xen_blkbk_remove()
548 xen_blkif_put(be->blkif); in xen_blkbk_remove()
553 struct backend_info *be, int state) in xen_blkbk_flush_diskcache() argument
555 struct xenbus_device *dev = be->dev; in xen_blkbk_flush_diskcache()
566 static void xen_blkbk_discard(struct xenbus_transaction xbt, struct backend_info *be) in xen_blkbk_discard() argument
568 struct xenbus_device *dev = be->dev; in xen_blkbk_discard()
569 struct xen_blkif *blkif = be->blkif; in xen_blkbk_discard()
572 struct block_device *bdev = file_bdev(be->blkif->vbd.bdev_file); in xen_blkbk_discard()
609 struct backend_info *be, int state) in xen_blkbk_barrier() argument
611 struct xenbus_device *dev = be->dev; in xen_blkbk_barrier()
631 struct backend_info *be = kzalloc(sizeof(struct backend_info), in xen_blkbk_probe() local
637 if (!be) { in xen_blkbk_probe()
642 be->dev = dev; in xen_blkbk_probe()
643 dev_set_drvdata(&dev->dev, be); in xen_blkbk_probe()
645 be->blkif = xen_blkif_alloc(dev->otherend_id); in xen_blkbk_probe()
646 if (IS_ERR(be->blkif)) { in xen_blkbk_probe()
647 err = PTR_ERR(be->blkif); in xen_blkbk_probe()
648 be->blkif = NULL; in xen_blkbk_probe()
668 be->blkif->be = be; in xen_blkbk_probe()
670 err = xenbus_watch_pathfmt(dev, &be->backend_watch, NULL, in xen_blkbk_probe()
704 struct backend_info *be in backend_changed() local
706 struct xenbus_device *dev = be->dev; in backend_changed()
728 if (be->major | be->minor) { in backend_changed()
729 if (be->major != major || be->minor != minor) in backend_changed()
731 be->major, be->minor, major, minor); in backend_changed()
735 be->mode = xenbus_read(XBT_NIL, dev->nodename, "mode", NULL); in backend_changed()
736 if (IS_ERR(be->mode)) { in backend_changed()
737 err = PTR_ERR(be->mode); in backend_changed()
738 be->mode = NULL; in backend_changed()
752 kfree(be->mode); in backend_changed()
753 be->mode = NULL; in backend_changed()
757 be->major = major; in backend_changed()
758 be->minor = minor; in backend_changed()
760 err = xen_vbd_create(be->blkif, handle, major, minor, in backend_changed()
761 !strchr(be->mode, 'w'), cdrom); in backend_changed()
768 xen_vbd_free(&be->blkif->vbd); in backend_changed()
774 kfree(be->mode); in backend_changed()
775 be->mode = NULL; in backend_changed()
776 be->major = 0; in backend_changed()
777 be->minor = 0; in backend_changed()
780 xen_update_blkif_status(be->blkif); in backend_changed()
790 struct backend_info *be = dev_get_drvdata(&dev->dev); in frontend_changed() local
817 err = xen_blkif_disconnect(be->blkif); in frontend_changed()
823 err = connect_ring(be); in frontend_changed()
826 * Clean up so that memory resources can be used by in frontend_changed()
829 xen_blkif_disconnect(be->blkif); in frontend_changed()
832 xen_update_blkif_status(be->blkif); in frontend_changed()
840 xen_blkif_disconnect(be->blkif); in frontend_changed()
870 struct backend_info *be = dev_get_drvdata(&dev->dev); in reclaim_memory() local
872 if (!be) in reclaim_memory()
874 be->blkif->buffer_squeeze_end = jiffies + in reclaim_memory()
884 static void connect(struct backend_info *be) in connect() argument
888 struct xenbus_device *dev = be->dev; in connect()
901 xen_blkbk_flush_diskcache(xbt, be, be->blkif->vbd.flush_support); in connect()
903 xen_blkbk_discard(xbt, be); in connect()
905 xen_blkbk_barrier(xbt, be, be->blkif->vbd.flush_support); in connect()
908 be->blkif->vbd.feature_gnt_persistent_parm); in connect()
916 (unsigned long long)vbd_sz(&be->blkif->vbd)); in connect()
925 be->blkif->vbd.type | in connect()
926 (be->blkif->vbd.readonly ? VDISK_READONLY : 0)); in connect()
934 file_bdev(be->blkif->vbd.bdev_file))); in connect()
942 file_bdev(be->blkif->vbd.bdev_file))); in connect()
972 struct xenbus_device *dev = blkif->be->dev; in read_per_ring_refs()
1057 static int connect_ring(struct backend_info *be) in connect_ring() argument
1059 struct xenbus_device *dev = be->dev; in connect_ring()
1060 struct xen_blkif *blkif = be->blkif; in connect_ring()