Revert "ANDROID: block: Add support for filesystem requests and small segments"
This reverts commit 8a2f432fcb.
It conflicts with the LTS merge revert and will be brought back after
that is properly merged.
Bug: 308663717
Bug: 319125789
Cc: Bart Van Assche <bvanassche@acm.org>
Cc: Juan Yescas <jyescas@google.com>
Change-Id: I764adf995cae6b485d4d98e410c78128a88647e0
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
parent
71ad82fd45
commit
80cdac5d86
3 changed files with 8 additions and 13 deletions
|
|
@ -285,8 +285,7 @@ static struct bio *bio_split_rw(struct bio *bio, struct queue_limits *lim,
|
||||||
if (nsegs < lim->max_segments &&
|
if (nsegs < lim->max_segments &&
|
||||||
bytes + bv.bv_len <= max_bytes &&
|
bytes + bv.bv_len <= max_bytes &&
|
||||||
bv.bv_offset + bv.bv_len <= PAGE_SIZE) {
|
bv.bv_offset + bv.bv_len <= PAGE_SIZE) {
|
||||||
/* single-page bvec optimization */
|
nsegs++;
|
||||||
nsegs += blk_segments(lim, bv.bv_len);
|
|
||||||
bytes += bv.bv_len;
|
bytes += bv.bv_len;
|
||||||
} else {
|
} else {
|
||||||
if (bvec_split_segs(lim, &bv, &nsegs, &bytes,
|
if (bvec_split_segs(lim, &bv, &nsegs, &bytes,
|
||||||
|
|
@ -534,10 +533,7 @@ static int __blk_bios_map_sg(struct request_queue *q, struct bio *bio,
|
||||||
__blk_segment_map_sg_merge(q, &bvec, &bvprv, sg))
|
__blk_segment_map_sg_merge(q, &bvec, &bvprv, sg))
|
||||||
goto next_bvec;
|
goto next_bvec;
|
||||||
|
|
||||||
if (bvec.bv_offset + bvec.bv_len <= PAGE_SIZE &&
|
if (bvec.bv_offset + bvec.bv_len <= PAGE_SIZE)
|
||||||
(!blk_queue_sub_page_limits(&q->limits) ||
|
|
||||||
bvec.bv_len <= q->limits.max_segment_size))
|
|
||||||
/* single-segment bvec optimization */
|
|
||||||
nsegs += __blk_bvec_map_sg(bvec, sglist, sg);
|
nsegs += __blk_bvec_map_sg(bvec, sglist, sg);
|
||||||
else
|
else
|
||||||
nsegs += blk_bvec_map_sg(q, &bvec, sglist, sg);
|
nsegs += blk_bvec_map_sg(q, &bvec, sglist, sg);
|
||||||
|
|
|
||||||
|
|
@ -2951,8 +2951,6 @@ void blk_mq_submit_bio(struct bio *bio)
|
||||||
bio = __bio_split_to_limits(bio, &q->limits, &nr_segs);
|
bio = __bio_split_to_limits(bio, &q->limits, &nr_segs);
|
||||||
if (!bio)
|
if (!bio)
|
||||||
return;
|
return;
|
||||||
} else if (bio->bi_vcnt == 1) {
|
|
||||||
nr_segs = blk_segments(&q->limits, bio->bi_io_vec[0].bv_len);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!bio_integrity_prep(bio))
|
if (!bio_integrity_prep(bio))
|
||||||
|
|
|
||||||
11
block/blk.h
11
block/blk.h
|
|
@ -337,12 +337,13 @@ static inline bool bio_may_exceed_limits(struct bio *bio,
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check whether bio splitting should be performed. This check may
|
* All drivers must accept single-segments bios that are <= PAGE_SIZE.
|
||||||
* trigger the bio splitting code even if splitting is not necessary.
|
* This is a quick and dirty check that relies on the fact that
|
||||||
|
* bi_io_vec[0] is always valid if a bio has data. The check might
|
||||||
|
* lead to occasional false negatives when bios are cloned, but compared
|
||||||
|
* to the performance impact of cloned bios themselves the loop below
|
||||||
|
* doesn't matter anyway.
|
||||||
*/
|
*/
|
||||||
if (blk_queue_sub_page_limits(lim) && bio->bi_io_vec &&
|
|
||||||
bio->bi_io_vec->bv_len > lim->max_segment_size)
|
|
||||||
return true;
|
|
||||||
return lim->chunk_sectors || bio->bi_vcnt != 1 ||
|
return lim->chunk_sectors || bio->bi_vcnt != 1 ||
|
||||||
bio->bi_io_vec->bv_len + bio->bi_io_vec->bv_offset > PAGE_SIZE;
|
bio->bi_io_vec->bv_len + bio->bi_io_vec->bv_offset > PAGE_SIZE;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue