• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/block/

Lines Matching refs:vblk

48 	struct virtio_blk *vblk = vq->vdev->priv;
53 spin_lock_irqsave(&vblk->lock, flags);
54 while ((vbr = virtqueue_get_buf(vblk->vq, &len)) != NULL) {
84 mempool_free(vbr, vblk->pool);
87 blk_start_queue(vblk->disk->queue);
88 spin_unlock_irqrestore(&vblk->lock, flags);
91 static bool do_req(struct request_queue *q, struct virtio_blk *vblk,
97 vbr = mempool_alloc(vblk->pool, GFP_ATOMIC);
134 sg_set_buf(&vblk->sg[out++], &vbr->out_hdr, sizeof(vbr->out_hdr));
143 sg_set_buf(&vblk->sg[out++], vbr->req->cmd, vbr->req->cmd_len);
145 num = blk_rq_map_sg(q, vbr->req, vblk->sg + out);
148 sg_set_buf(&vblk->sg[num + out + in++], vbr->req->sense, 96);
149 sg_set_buf(&vblk->sg[num + out + in++], &vbr->in_hdr,
153 sg_set_buf(&vblk->sg[num + out + in++], &vbr->status,
166 if (virtqueue_add_buf(vblk->vq, vblk->sg, out, in, vbr) < 0) {
167 mempool_free(vbr, vblk->pool);
171 list_add_tail(&vbr->list, &vblk->reqs);
177 struct virtio_blk *vblk = q->queuedata;
182 BUG_ON(req->nr_phys_segments + 2 > vblk->sg_elems);
186 if (!do_req(q, vblk, req)) {
195 virtqueue_kick(vblk->vq);
202 struct virtio_blk *vblk = disk->private_data;
207 bio = bio_map_kern(vblk->disk->queue, id_str, VIRTIO_BLK_ID_BYTES,
212 req = blk_make_request(vblk->disk->queue, bio, GFP_KERNEL);
219 err = blk_execute_rq(vblk->disk->queue, vblk->disk, req, false);
229 struct virtio_blk *vblk = disk->private_data;
234 if (!virtio_has_feature(vblk->vdev, VIRTIO_BLK_F_SCSI))
256 struct virtio_blk *vblk = bd->bd_disk->private_data;
261 err = virtio_config_val(vblk->vdev, VIRTIO_BLK_F_GEOMETRY,
312 struct virtio_blk *vblk;
334 vdev->priv = vblk = kmalloc(sizeof(*vblk) +
335 sizeof(vblk->sg[0]) * sg_elems, GFP_KERNEL);
336 if (!vblk) {
341 INIT_LIST_HEAD(&vblk->reqs);
342 spin_lock_init(&vblk->lock);
343 vblk->vdev = vdev;
344 vblk->sg_elems = sg_elems;
345 sg_init_table(vblk->sg, vblk->sg_elems);
348 vblk->vq = virtio_find_single_vq(vdev, blk_done, "requests");
349 if (IS_ERR(vblk->vq)) {
350 err = PTR_ERR(vblk->vq);
354 vblk->pool = mempool_create_kmalloc_pool(1,sizeof(struct virtblk_req));
355 if (!vblk->pool) {
360 vblk->disk = alloc_disk(1 << PART_BITS);
361 if (!vblk->disk) {
366 q = vblk->disk->queue = blk_init_queue(do_virtblk_request, &vblk->lock);
372 q->queuedata = vblk;
375 sprintf(vblk->disk->disk_name, "vd%c", 'a' + index % 26);
377 sprintf(vblk->disk->disk_name, "vd%c%c",
383 sprintf(vblk->disk->disk_name, "vd%c%c%c",
387 vblk->disk->major = major;
388 vblk->disk->first_minor = index_to_minor(index);
389 vblk->disk->private_data = vblk;
390 vblk->disk->fops = &virtblk_fops;
391 vblk->disk->driverfs_dev = &vdev->dev;
422 set_disk_ro(vblk->disk, 1);
434 set_capacity(vblk->disk, cap);
437 blk_queue_max_segments(q, vblk->sg_elems-2);
491 add_disk(vblk->disk);
492 err = device_create_file(disk_to_dev(vblk->disk), &dev_attr_serial);
499 del_gendisk(vblk->disk);
500 blk_cleanup_queue(vblk->disk->queue);
502 put_disk(vblk->disk);
504 mempool_destroy(vblk->pool);
508 kfree(vblk);
515 struct virtio_blk *vblk = vdev->priv;
518 BUG_ON(!list_empty(&vblk->reqs));
523 del_gendisk(vblk->disk);
524 blk_cleanup_queue(vblk->disk->queue);
525 put_disk(vblk->disk);
526 mempool_destroy(vblk->pool);
528 kfree(vblk);