[SCSI] st: Increase success probability in driver buffer allocation
authorFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Mon, 20 Dec 2010 16:44:45 +0000 (18:44 +0200)
committerJames Bottomley <James.Bottomley@suse.de>
Thu, 23 Dec 2010 05:26:50 +0000 (23:26 -0600)
Modify allocation to try the minimum possible page order allowed by the HBA
scatter/gather segment limit in allocation of the driver's internal
buffer. This increases the probability of successful allocation. The
allocation may still fail if this minimum order is > 0.

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Signed-off-by: Kai Makisara <kai.makisara@kolumbus.fi>
Reported-by: Lukas Kolbe <lkolbe@techfak.uni-bielefeld.de>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/st.c

index 12a36ac..1871b8a 100644 (file)
@@ -3729,7 +3729,8 @@ static int enlarge_buffer(struct st_buffer * STbuffer, int new_size, int need_dm
                b_size = PAGE_SIZE << order;
        } else {
                for (b_size = PAGE_SIZE, order = 0;
-                    order < ST_MAX_ORDER && b_size < new_size;
+                    order < ST_MAX_ORDER &&
+                            max_segs * (PAGE_SIZE << order) < new_size;
                     order++, b_size *= 2)
                        ;  /* empty */
                STbuffer->reserved_page_order = order;