squashfs: migrate from ll_rw_block usage to BIO
[linux-2.6-microblaze.git] / fs / squashfs / lzo_wrapper.c
index aa3c3da..97bb7d9 100644 (file)
@@ -9,7 +9,7 @@
  */
 
 #include <linux/mutex.h>
-#include <linux/buffer_head.h>
+#include <linux/bio.h>
 #include <linux/slab.h>
 #include <linux/vmalloc.h>
 #include <linux/lzo.h>
@@ -63,21 +63,24 @@ static void lzo_free(void *strm)
 
 
 static int lzo_uncompress(struct squashfs_sb_info *msblk, void *strm,
-       struct buffer_head **bh, int b, int offset, int length,
+       struct bio *bio, int offset, int length,
        struct squashfs_page_actor *output)
 {
+       struct bvec_iter_all iter_all = {};
+       struct bio_vec *bvec = bvec_init_iter_all(&iter_all);
        struct squashfs_lzo *stream = strm;
        void *buff = stream->input, *data;
-       int avail, i, bytes = length, res;
+       int bytes = length, res;
        size_t out_len = output->length;
 
-       for (i = 0; i < b; i++) {
-               avail = min(bytes, msblk->devblksize - offset);
-               memcpy(buff, bh[i]->b_data + offset, avail);
+       while (bio_next_segment(bio, &iter_all)) {
+               int avail = min(bytes, ((int)bvec->bv_len) - offset);
+
+               data = page_address(bvec->bv_page) + bvec->bv_offset;
+               memcpy(buff, data + offset, avail);
                buff += avail;
                bytes -= avail;
                offset = 0;
-               put_bh(bh[i]);
        }
 
        res = lzo1x_decompress_safe(stream->input, (size_t)length,