sched: Remove unlikely() from ttwu_post_activation
[pandora-kernel.git] / Documentation / lguest / lguest.c
index 8a6a8c6..dc73bc5 100644 (file)
@@ -1639,15 +1639,6 @@ static void blk_request(struct virtqueue *vq)
         */
        off = out->sector * 512;
 
-       /*
-        * The block device implements "barriers", where the Guest indicates
-        * that it wants all previous writes to occur before this write.  We
-        * don't have a way of asking our kernel to do a barrier, so we just
-        * synchronize all the data in the file.  Pretty poor, no?
-        */
-       if (out->type & VIRTIO_BLK_T_BARRIER)
-               fdatasync(vblk->fd);
-
        /*
         * In general the virtio block driver is allowed to try SCSI commands.
         * It'd be nice if we supported eject, for example, but we don't.
@@ -1680,6 +1671,13 @@ static void blk_request(struct virtqueue *vq)
                        /* Die, bad Guest, die. */
                        errx(1, "Write past end %llu+%u", off, ret);
                }
+
+               wlen = sizeof(*in);
+               *in = (ret >= 0 ? VIRTIO_BLK_S_OK : VIRTIO_BLK_S_IOERR);
+       } else if (out->type & VIRTIO_BLK_T_FLUSH) {
+               /* Flush */
+               ret = fdatasync(vblk->fd);
+               verbose("FLUSH fdatasync: %i\n", ret);
                wlen = sizeof(*in);
                *in = (ret >= 0 ? VIRTIO_BLK_S_OK : VIRTIO_BLK_S_IOERR);
        } else {
@@ -1703,15 +1701,6 @@ static void blk_request(struct virtqueue *vq)
                }
        }
 
-       /*
-        * OK, so we noted that it was pretty poor to use an fdatasync as a
-        * barrier.  But Christoph Hellwig points out that we need a sync
-        * *afterwards* as well: "Barriers specify no reordering to the front
-        * or the back."  And Jens Axboe confirmed it, so here we are:
-        */
-       if (out->type & VIRTIO_BLK_T_BARRIER)
-               fdatasync(vblk->fd);
-
        /* Finished that request. */
        add_used(vq, head, wlen);
 }
@@ -1736,8 +1725,8 @@ static void setup_block_file(const char *filename)
        vblk->fd = open_or_die(filename, O_RDWR|O_LARGEFILE);
        vblk->len = lseek64(vblk->fd, 0, SEEK_END);
 
-       /* We support barriers. */
-       add_feature(dev, VIRTIO_BLK_F_BARRIER);
+       /* We support FLUSH. */
+       add_feature(dev, VIRTIO_BLK_F_FLUSH);
 
        /* Tell Guest how many sectors this device has. */
        conf.capacity = cpu_to_le64(vblk->len / 512);