]> Pileus Git - ~andy/linux/blobdiff - fs/ocfs2/cluster/heartbeat.c
ocfs2: Fix heartbeat sector calculation
[~andy/linux] / fs / ocfs2 / cluster / heartbeat.c
index 504595d6cf65c0f966aaf0d8ee3ce725837ac020..305cba3681fe0126b4d1e33dd58c3b0cc3bea8a5 100644 (file)
@@ -320,8 +320,12 @@ static int compute_max_sectors(struct block_device *bdev)
                max_pages = q->max_hw_segments;
        max_pages--; /* Handle I/Os that straddle a page */
 
-       max_sectors = max_pages << (PAGE_SHIFT - 9);
-
+       if (max_pages) {
+               max_sectors = max_pages << (PAGE_SHIFT - 9);
+       } else {
+               /* If BIO contains 1 or less than 1 page. */
+               max_sectors = q->max_sectors;
+       }
        /* Why is fls() 1-based???? */
        pow_two_sectors = 1 << (fls(max_sectors) - 1);