include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit...
[safe/jmp/linux-2.6] / drivers / block / swim.c
index 97ef426..e463657 100644 (file)
@@ -18,6 +18,7 @@
 
 #include <linux/module.h>
 #include <linux/fd.h>
+#include <linux/slab.h>
 #include <linux/blkdev.h>
 #include <linux/hdreg.h>
 #include <linux/kernel.h>
@@ -514,7 +515,7 @@ static int floppy_read_sectors(struct floppy_state *fs,
                        ret = swim_read_sector(fs, side, track, sector,
                                                buffer);
                        if (try-- == 0)
-                               return -1;
+                               return -EIO;
                } while (ret != 512);
 
                buffer += ret;
@@ -528,38 +529,31 @@ static void redo_fd_request(struct request_queue *q)
        struct request *req;
        struct floppy_state *fs;
 
-       while ((req = elv_next_request(q))) {
+       req = blk_fetch_request(q);
+       while (req) {
+               int err = -EIO;
 
                fs = req->rq_disk->private_data;
-               if (req->sector < 0 || req->sector >= fs->total_secs) {
-                       __blk_end_request_cur(req, -EIO);
-                       continue;
-               }
-               if (!fs->disk_in) {
-                       __blk_end_request_cur(req, -EIO);
-                       continue;
-               }
-               if (rq_data_dir(req) == WRITE) {
-                       if (fs->write_protected) {
-                               __blk_end_request_cur(req, -EIO);
-                               continue;
-                       }
-               }
+               if (blk_rq_pos(req) >= fs->total_secs)
+                       goto done;
+               if (!fs->disk_in)
+                       goto done;
+               if (rq_data_dir(req) == WRITE && fs->write_protected)
+                       goto done;
+
                switch (rq_data_dir(req)) {
                case WRITE:
                        /* NOT IMPLEMENTED */
-                       __blk_end_request_cur(req, -EIO);
                        break;
                case READ:
-                       if (floppy_read_sectors(fs, req->sector,
-                                               req->current_nr_sectors,
-                                               req->buffer)) {
-                               __blk_end_request_cur(req, -EIO);
-                               continue;
-                       }
-                       __blk_end_request_cur(req, 0);
+                       err = floppy_read_sectors(fs, blk_rq_pos(req),
+                                                 blk_rq_cur_sectors(req),
+                                                 req->buffer);
                        break;
                }
+       done:
+               if (!__blk_end_request_cur(req, err))
+                       req = blk_fetch_request(q);
        }
 }
 
@@ -755,7 +749,7 @@ static int floppy_revalidate(struct gendisk *disk)
        return !fs->disk_in;
 }
 
-static struct block_device_operations floppy_fops = {
+static const struct block_device_operations floppy_fops = {
        .owner           = THIS_MODULE,
        .open            = floppy_open,
        .release         = floppy_release,
@@ -871,7 +865,7 @@ static int __devinit swim_probe(struct platform_device *dev)
        struct swim_priv *swd;
        int ret;
 
-       res = platform_get_resource_byname(dev, IORESOURCE_MEM, "swim-regs");
+       res = platform_get_resource(dev, IORESOURCE_MEM, 0);
        if (!res) {
                ret = -ENODEV;
                goto out;
@@ -949,7 +943,7 @@ static int __devexit swim_remove(struct platform_device *dev)
 
        iounmap(swd->base);
 
-       res = platform_get_resource_byname(dev, IORESOURCE_MEM, "swim-regs");
+       res = platform_get_resource(dev, IORESOURCE_MEM, 0);
        if (res)
                release_mem_region(res->start, resource_size(res));