Merge branch 'master' into for-next
[pandora-kernel.git] / fs / direct-io.c
index 85882f6..dcb5577 100644 (file)
@@ -325,12 +325,16 @@ void dio_end_io(struct bio *bio, int error)
 }
 EXPORT_SYMBOL_GPL(dio_end_io);
 
-static int
+static void
 dio_bio_alloc(struct dio *dio, struct block_device *bdev,
                sector_t first_sector, int nr_vecs)
 {
        struct bio *bio;
 
+       /*
+        * bio_alloc() is guaranteed to return a bio when called with
+        * __GFP_WAIT and we request a valid number of vectors.
+        */
        bio = bio_alloc(GFP_KERNEL, nr_vecs);
 
        bio->bi_bdev = bdev;
@@ -342,7 +346,6 @@ dio_bio_alloc(struct dio *dio, struct block_device *bdev,
 
        dio->bio = bio;
        dio->logical_offset_in_bio = dio->cur_page_fs_offset;
-       return 0;
 }
 
 /*
@@ -583,8 +586,9 @@ static int dio_new_bio(struct dio *dio, sector_t start_sector)
                goto out;
        sector = start_sector << (dio->blkbits - 9);
        nr_pages = min(dio->pages_in_io, bio_get_nr_vecs(dio->map_bh.b_bdev));
+       nr_pages = min(nr_pages, BIO_MAX_PAGES);
        BUG_ON(nr_pages <= 0);
-       ret = dio_bio_alloc(dio, dio->map_bh.b_bdev, sector, nr_pages);
+       dio_bio_alloc(dio, dio->map_bh.b_bdev, sector, nr_pages);
        dio->boundary = 0;
 out:
        return ret;
@@ -641,11 +645,11 @@ static int dio_send_cur_page(struct dio *dio)
                /*
                 * See whether this new request is contiguous with the old.
                 *
-                * Btrfs cannot handl having logically non-contiguous requests
-                * submitted.  For exmple if you have
+                * Btrfs cannot handle having logically non-contiguous requests
+                * submitted.  For example if you have
                 *
                 * Logical:  [0-4095][HOLE][8192-12287]
-                * Phyiscal: [0-4095]      [4096-8181]
+                * Physical: [0-4095]      [4096-8191]
                 *
                 * We cannot submit those pages together as one BIO.  So if our
                 * current logical offset in the file does not equal what would