Lines Matching refs: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()
205 err = xenbus_map_ring_valloc(blkif->be->dev, gref, nr_grefs, 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);
532 struct backend_info *be = dev_get_drvdata(&dev->dev); in xen_blkbk_remove() local
536 if (be->major || be->minor) in xen_blkbk_remove()
539 if (be->backend_watch.node) { in xen_blkbk_remove()
540 unregister_xenbus_watch(&be->backend_watch); in xen_blkbk_remove()
541 kfree(be->backend_watch.node); in xen_blkbk_remove()
542 be->backend_watch.node = NULL; in xen_blkbk_remove()
547 if (be->blkif) { in xen_blkbk_remove()
548 xen_blkif_disconnect(be->blkif); in xen_blkbk_remove()
551 xen_blkif_put(be->blkif); in xen_blkbk_remove()
558 struct backend_info *be, int state) in xen_blkbk_flush_diskcache() argument
560 struct xenbus_device *dev = be->dev; in xen_blkbk_flush_diskcache()
571 static void xen_blkbk_discard(struct xenbus_transaction xbt, struct backend_info *be) in xen_blkbk_discard() argument
573 struct xenbus_device *dev = be->dev; in xen_blkbk_discard()
574 struct xen_blkif *blkif = be->blkif; in xen_blkbk_discard()
577 struct block_device *bdev = be->blkif->vbd.bdev; in xen_blkbk_discard()
615 struct backend_info *be, int state) in xen_blkbk_barrier() argument
617 struct xenbus_device *dev = be->dev; in xen_blkbk_barrier()
637 struct backend_info *be = kzalloc(sizeof(struct backend_info), in xen_blkbk_probe() local
643 if (!be) { in xen_blkbk_probe()
648 be->dev = dev; in xen_blkbk_probe()
649 dev_set_drvdata(&dev->dev, be); in xen_blkbk_probe()
651 be->blkif = xen_blkif_alloc(dev->otherend_id); in xen_blkbk_probe()
652 if (IS_ERR(be->blkif)) { in xen_blkbk_probe()
653 err = PTR_ERR(be->blkif); in xen_blkbk_probe()
654 be->blkif = NULL; in xen_blkbk_probe()
674 be->blkif->be = be; in xen_blkbk_probe()
676 err = xenbus_watch_pathfmt(dev, &be->backend_watch, NULL, in xen_blkbk_probe()
710 struct backend_info *be in backend_changed() local
712 struct xenbus_device *dev = be->dev; in backend_changed()
734 if (be->major | be->minor) { in backend_changed()
735 if (be->major != major || be->minor != minor) in backend_changed()
737 be->major, be->minor, major, minor); in backend_changed()
741 be->mode = xenbus_read(XBT_NIL, dev->nodename, "mode", NULL); in backend_changed()
742 if (IS_ERR(be->mode)) { in backend_changed()
743 err = PTR_ERR(be->mode); in backend_changed()
744 be->mode = NULL; in backend_changed()
758 kfree(be->mode); in backend_changed()
759 be->mode = NULL; in backend_changed()
763 be->major = major; in backend_changed()
764 be->minor = minor; in backend_changed()
766 err = xen_vbd_create(be->blkif, handle, major, minor, in backend_changed()
767 !strchr(be->mode, 'w'), cdrom); in backend_changed()
774 xen_vbd_free(&be->blkif->vbd); in backend_changed()
780 kfree(be->mode); in backend_changed()
781 be->mode = NULL; in backend_changed()
782 be->major = 0; in backend_changed()
783 be->minor = 0; in backend_changed()
786 xen_update_blkif_status(be->blkif); in backend_changed()
796 struct backend_info *be = dev_get_drvdata(&dev->dev); in frontend_changed() local
823 err = xen_blkif_disconnect(be->blkif); in frontend_changed()
829 err = connect_ring(be); in frontend_changed()
835 xen_blkif_disconnect(be->blkif); in frontend_changed()
838 xen_update_blkif_status(be->blkif); in frontend_changed()
846 xen_blkif_disconnect(be->blkif); in frontend_changed()
876 struct backend_info *be = dev_get_drvdata(&dev->dev); in reclaim_memory() local
878 if (!be) in reclaim_memory()
880 be->blkif->buffer_squeeze_end = jiffies + in reclaim_memory()
890 static void connect(struct backend_info *be) in connect() argument
894 struct xenbus_device *dev = be->dev; in connect()
907 xen_blkbk_flush_diskcache(xbt, be, be->blkif->vbd.flush_support); in connect()
909 xen_blkbk_discard(xbt, be); in connect()
911 xen_blkbk_barrier(xbt, be, be->blkif->vbd.flush_support); in connect()
914 be->blkif->vbd.feature_gnt_persistent_parm); in connect()
922 (unsigned long long)vbd_sz(&be->blkif->vbd)); in connect()
931 be->blkif->vbd.type | in connect()
932 (be->blkif->vbd.readonly ? VDISK_READONLY : 0)); in connect()
940 bdev_logical_block_size(be->blkif->vbd.bdev)); in connect()
947 bdev_physical_block_size(be->blkif->vbd.bdev)); in connect()
977 struct xenbus_device *dev = blkif->be->dev; in read_per_ring_refs()
1062 static int connect_ring(struct backend_info *be) in connect_ring() argument
1064 struct xenbus_device *dev = be->dev; in connect_ring()
1065 struct xen_blkif *blkif = be->blkif; in connect_ring()