Whamcloud - gitweb
Branch HEAD
authoradilger <adilger>
Wed, 22 Oct 2008 20:22:58 +0000 (20:22 +0000)
committeradilger <adilger>
Wed, 22 Oct 2008 20:22:58 +0000 (20:22 +0000)
Limit bio_alloc() size to the maximum possible value, or it will always fail.
b=9945
i=johann

lustre/obdfilter/filter_io_26.c

index c37c585..58f6bde 100644 (file)
@@ -371,9 +371,10 @@ int filter_do_bio(struct obd_export *exp, struct inode *inode,
                                 frags++;
                         }
 
-                        /* allocate new bio */
-                        bio = bio_alloc(GFP_NOIO,
-                                        (npages - page_idx) * blocks_per_page);
+                        /* allocate new bio, limited by max BIO size, b=9945 */
+                        bio = bio_alloc(GFP_NOIO, max(BIO_MAX_PAGES,
+                                                      (npages - page_idx) *
+                                                      blocks_per_page));
                         if (bio == NULL) {
                                 CERROR("Can't allocate bio %u*%u = %u pages\n",
                                        (npages - page_idx), blocks_per_page,