block: fix incorrect branching in blk_max_size_offset()
[linux-2.6-microblaze.git] / include / linux / blkdev.h
index 639cae2..033eb5f 100644 (file)
@@ -1073,12 +1073,15 @@ static inline unsigned int blk_queue_get_max_sectors(struct request_queue *q,
  * file system requests.
  */
 static inline unsigned int blk_max_size_offset(struct request_queue *q,
-                                              sector_t offset)
-{
-       unsigned int chunk_sectors = q->limits.chunk_sectors;
-
-       if (!chunk_sectors)
-               return q->limits.max_sectors;
+                                              sector_t offset,
+                                              unsigned int chunk_sectors)
+{
+       if (!chunk_sectors) {
+               if (q->limits.chunk_sectors)
+                       chunk_sectors = q->limits.chunk_sectors;
+               else
+                       return q->limits.max_sectors;
+       }
 
        if (likely(is_power_of_2(chunk_sectors)))
                chunk_sectors -= offset & (chunk_sectors - 1);
@@ -1101,7 +1104,7 @@ static inline unsigned int blk_rq_get_max_sectors(struct request *rq,
            req_op(rq) == REQ_OP_SECURE_ERASE)
                return blk_queue_get_max_sectors(q, req_op(rq));
 
-       return min(blk_max_size_offset(q, offset),
+       return min(blk_max_size_offset(q, offset, 0),
                        blk_queue_get_max_sectors(q, req_op(rq)));
 }