diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/bio.c | 13 | ||||
-rw-r--r-- | fs/partitions/check.c | 7 |
2 files changed, 9 insertions, 11 deletions
@@ -507,10 +507,8 @@ int bio_get_nr_vecs(struct block_device *bdev) | |||
507 | int nr_pages; | 507 | int nr_pages; |
508 | 508 | ||
509 | nr_pages = ((queue_max_sectors(q) << 9) + PAGE_SIZE - 1) >> PAGE_SHIFT; | 509 | nr_pages = ((queue_max_sectors(q) << 9) + PAGE_SIZE - 1) >> PAGE_SHIFT; |
510 | if (nr_pages > queue_max_phys_segments(q)) | 510 | if (nr_pages > queue_max_segments(q)) |
511 | nr_pages = queue_max_phys_segments(q); | 511 | nr_pages = queue_max_segments(q); |
512 | if (nr_pages > queue_max_hw_segments(q)) | ||
513 | nr_pages = queue_max_hw_segments(q); | ||
514 | 512 | ||
515 | return nr_pages; | 513 | return nr_pages; |
516 | } | 514 | } |
@@ -557,7 +555,7 @@ static int __bio_add_page(struct request_queue *q, struct bio *bio, struct page | |||
557 | .bi_rw = bio->bi_rw, | 555 | .bi_rw = bio->bi_rw, |
558 | }; | 556 | }; |
559 | 557 | ||
560 | if (q->merge_bvec_fn(q, &bvm, prev) < len) { | 558 | if (q->merge_bvec_fn(q, &bvm, prev) != prev->bv_len) { |
561 | prev->bv_len -= len; | 559 | prev->bv_len -= len; |
562 | return 0; | 560 | return 0; |
563 | } | 561 | } |
@@ -575,8 +573,7 @@ static int __bio_add_page(struct request_queue *q, struct bio *bio, struct page | |||
575 | * make this too complex. | 573 | * make this too complex. |
576 | */ | 574 | */ |
577 | 575 | ||
578 | while (bio->bi_phys_segments >= queue_max_phys_segments(q) | 576 | while (bio->bi_phys_segments >= queue_max_segments(q)) { |
579 | || bio->bi_phys_segments >= queue_max_hw_segments(q)) { | ||
580 | 577 | ||
581 | if (retried_segments) | 578 | if (retried_segments) |
582 | return 0; | 579 | return 0; |
@@ -611,7 +608,7 @@ static int __bio_add_page(struct request_queue *q, struct bio *bio, struct page | |||
611 | * merge_bvec_fn() returns number of bytes it can accept | 608 | * merge_bvec_fn() returns number of bytes it can accept |
612 | * at this offset | 609 | * at this offset |
613 | */ | 610 | */ |
614 | if (q->merge_bvec_fn(q, &bvm, bvec) < len) { | 611 | if (q->merge_bvec_fn(q, &bvm, bvec) != bvec->bv_len) { |
615 | bvec->bv_page = NULL; | 612 | bvec->bv_page = NULL; |
616 | bvec->bv_len = 0; | 613 | bvec->bv_len = 0; |
617 | bvec->bv_offset = 0; | 614 | bvec->bv_offset = 0; |
diff --git a/fs/partitions/check.c b/fs/partitions/check.c index 64bc8998ac9a..e8865c11777f 100644 --- a/fs/partitions/check.c +++ b/fs/partitions/check.c | |||
@@ -412,9 +412,10 @@ struct hd_struct *add_partition(struct gendisk *disk, int partno, | |||
412 | pdev = part_to_dev(p); | 412 | pdev = part_to_dev(p); |
413 | 413 | ||
414 | p->start_sect = start; | 414 | p->start_sect = start; |
415 | p->alignment_offset = queue_sector_alignment_offset(disk->queue, start); | 415 | p->alignment_offset = |
416 | p->discard_alignment = queue_sector_discard_alignment(disk->queue, | 416 | queue_limit_alignment_offset(&disk->queue->limits, start); |
417 | start); | 417 | p->discard_alignment = |
418 | queue_limit_discard_alignment(&disk->queue->limits, start); | ||
418 | p->nr_sects = len; | 419 | p->nr_sects = len; |
419 | p->partno = partno; | 420 | p->partno = partno; |
420 | p->policy = get_disk_ro(disk); | 421 | p->policy = get_disk_ro(disk); |