um: switch to using blk_queue_write_cache()
[cascardo/linux.git] / arch / um / drivers / ubd_kern.c
index e8ab93c..17e96dc 100644 (file)
@@ -535,11 +535,7 @@ static int read_cow_bitmap(int fd, void *buf, int offset, int len)
 {
        int err;
 
-       err = os_seek_file(fd, offset);
-       if (err < 0)
-               return err;
-
-       err = os_read_file(fd, buf, len);
+       err = os_pread_file(fd, buf, len, offset);
        if (err < 0)
                return err;
 
@@ -866,7 +862,7 @@ static int ubd_add(int n, char **error_out)
                goto out;
        }
        ubd_dev->queue->queuedata = ubd_dev;
-       blk_queue_flush(ubd_dev->queue, REQ_FLUSH);
+       blk_queue_write_cache(ubd_dev->queue, true, false);
 
        blk_queue_max_segments(ubd_dev->queue, MAX_SG);
        err = ubd_disk_register(UBD_MAJOR, ubd_dev->size, n, &ubd_gendisk[n]);
@@ -1377,14 +1373,8 @@ static int update_bitmap(struct io_thread_req *req)
        if(req->cow_offset == -1)
                return 0;
 
-       n = os_seek_file(req->fds[1], req->cow_offset);
-       if(n < 0){
-               printk("do_io - bitmap lseek failed : err = %d\n", -n);
-               return 1;
-       }
-
-       n = os_write_file(req->fds[1], &req->bitmap_words,
-                         sizeof(req->bitmap_words));
+       n = os_pwrite_file(req->fds[1], &req->bitmap_words,
+                         sizeof(req->bitmap_words), req->cow_offset);
        if(n != sizeof(req->bitmap_words)){
                printk("do_io - bitmap update failed, err = %d fd = %d\n", -n,
                       req->fds[1]);
@@ -1399,7 +1389,6 @@ static void do_io(struct io_thread_req *req)
        char *buf;
        unsigned long len;
        int n, nsectors, start, end, bit;
-       int err;
        __u64 off;
 
        if (req->op == UBD_FLUSH) {
@@ -1428,18 +1417,12 @@ static void do_io(struct io_thread_req *req)
                len = (end - start) * req->sectorsize;
                buf = &req->buffer[start * req->sectorsize];
 
-               err = os_seek_file(req->fds[bit], off);
-               if(err < 0){
-                       printk("do_io - lseek failed : err = %d\n", -err);
-                       req->error = 1;
-                       return;
-               }
                if(req->op == UBD_READ){
                        n = 0;
                        do {
                                buf = &buf[n];
                                len -= n;
-                               n = os_read_file(req->fds[bit], buf, len);
+                               n = os_pread_file(req->fds[bit], buf, len, off);
                                if (n < 0) {
                                        printk("do_io - read failed, err = %d "
                                               "fd = %d\n", -n, req->fds[bit]);
@@ -1449,7 +1432,7 @@ static void do_io(struct io_thread_req *req)
                        } while((n < len) && (n != 0));
                        if (n < len) memset(&buf[n], 0, len - n);
                } else {
-                       n = os_write_file(req->fds[bit], buf, len);
+                       n = os_pwrite_file(req->fds[bit], buf, len, off);
                        if(n != len){
                                printk("do_io - write failed err = %d "
                                       "fd = %d\n", -n, req->fds[bit]);