Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd2360a3

Browse files
committed
Merge tag 'block-5.10-2020-12-12' of git://git.kernel.dk/linux-block
Pull block fixes from Jens Axboe: "This should be it for 5.10. Mike and Song looked into the warning case, and thankfully it appears the fix was pretty trivial - we can just change the md device chunk type to unsigned int to get rid of it. They cannot currently be < 0, and nobody is checking for that either. We're reverting the discard changes as the corruption reports came in very late, and there's just no time to attempt to deal with it at this point. Reverting the changes in question is the right call for 5.10"* tag 'block-5.10-2020-12-12' of git://git.kernel.dk/linux-block: md: change mddev 'chunk_sectors' from int to unsigned Revert "md: add md_submit_discard_bio() for submitting discard bio" Revert "md/raid10: extend r10bio devs to raid disks" Revert "md/raid10: pull codes that wait for blocked dev into one function" Revert "md/raid10: improve raid10 discard request" Revert "md/raid10: improve discard request for far layout" Revert "dm raid: remove unnecessary discard limits for raid10"
2 parents6bff9bb +6ffeb1c commitd2360a3

File tree

6 files changed

+82
-393
lines changed

6 files changed

+82
-393
lines changed

‎drivers/md/dm-raid.c‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3728,6 +3728,17 @@ static void raid_io_hints(struct dm_target *ti, struct queue_limits *limits)
37283728

37293729
blk_limits_io_min(limits,chunk_size_bytes);
37303730
blk_limits_io_opt(limits,chunk_size_bytes*mddev_data_stripes(rs));
3731+
3732+
/*
3733+
* RAID10 personality requires bio splitting,
3734+
* RAID0/1/4/5/6 don't and process large discard bios properly.
3735+
*/
3736+
if (rs_is_raid10(rs)) {
3737+
limits->discard_granularity=max(chunk_size_bytes,
3738+
limits->discard_granularity);
3739+
limits->max_discard_sectors=min_not_zero(rs->md.chunk_sectors,
3740+
limits->max_discard_sectors);
3741+
}
37313742
}
37323743

37333744
staticvoidraid_postsuspend(structdm_target*ti)

‎drivers/md/md.c‎

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8582,26 +8582,6 @@ void md_write_end(struct mddev *mddev)
85828582

85838583
EXPORT_SYMBOL(md_write_end);
85848584

8585-
/* This is used by raid0 and raid10 */
8586-
voidmd_submit_discard_bio(structmddev*mddev,structmd_rdev*rdev,
8587-
structbio*bio,sector_tstart,sector_tsize)
8588-
{
8589-
structbio*discard_bio=NULL;
8590-
8591-
if (__blkdev_issue_discard(rdev->bdev,start,size,
8592-
GFP_NOIO,0,&discard_bio)|| !discard_bio)
8593-
return;
8594-
8595-
bio_chain(discard_bio,bio);
8596-
bio_clone_blkg_association(discard_bio,bio);
8597-
if (mddev->gendisk)
8598-
trace_block_bio_remap(bdev_get_queue(rdev->bdev),
8599-
discard_bio,disk_devt(mddev->gendisk),
8600-
bio->bi_iter.bi_sector);
8601-
submit_bio_noacct(discard_bio);
8602-
}
8603-
EXPORT_SYMBOL(md_submit_discard_bio);
8604-
86058585
/* md_allow_write(mddev)
86068586
* Calling this ensures that the array is marked 'active' so that writes
86078587
* may proceed without blocking. It is important to call this before

‎drivers/md/md.h‎

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ struct mddev {
311311
intexternal;/* metadata is
312312
* managed externally */
313313
charmetadata_type[17];/* externally set*/
314-
intchunk_sectors;
314+
unsignedintchunk_sectors;
315315
time64_tctime,utime;
316316
intlevel,layout;
317317
charclevel[16];
@@ -339,7 +339,7 @@ struct mddev {
339339
*/
340340
sector_treshape_position;
341341
intdelta_disks,new_level,new_layout;
342-
intnew_chunk_sectors;
342+
unsignedintnew_chunk_sectors;
343343
intreshape_backwards;
344344

345345
structmd_thread*thread;/* management thread */
@@ -713,8 +713,6 @@ extern void md_write_end(struct mddev *mddev);
713713
externvoidmd_done_sync(structmddev*mddev,intblocks,intok);
714714
externvoidmd_error(structmddev*mddev,structmd_rdev*rdev);
715715
externvoidmd_finish_reshape(structmddev*mddev);
716-
externvoidmd_submit_discard_bio(structmddev*mddev,structmd_rdev*rdev,
717-
structbio*bio,sector_tstart,sector_tsize);
718716

719717
externbool__must_checkmd_flush_request(structmddev*mddev,structbio*bio);
720718
externvoidmd_super_write(structmddev*mddev,structmd_rdev*rdev,

‎drivers/md/raid0.c‎

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,7 @@ static void raid0_handle_discard(struct mddev *mddev, struct bio *bio)
477477

478478
for (disk=0;disk<zone->nb_dev;disk++) {
479479
sector_tdev_start,dev_end;
480+
structbio*discard_bio=NULL;
480481
structmd_rdev*rdev;
481482

482483
if (disk<start_disk_index)
@@ -499,9 +500,18 @@ static void raid0_handle_discard(struct mddev *mddev, struct bio *bio)
499500

500501
rdev=conf->devlist[(zone-conf->strip_zone)*
501502
conf->strip_zone[0].nb_dev+disk];
502-
md_submit_discard_bio(mddev,rdev,bio,
503+
if (__blkdev_issue_discard(rdev->bdev,
503504
dev_start+zone->dev_start+rdev->data_offset,
504-
dev_end-dev_start);
505+
dev_end-dev_start,GFP_NOIO,0,&discard_bio)||
506+
!discard_bio)
507+
continue;
508+
bio_chain(discard_bio,bio);
509+
bio_clone_blkg_association(discard_bio,bio);
510+
if (mddev->gendisk)
511+
trace_block_bio_remap(bdev_get_queue(rdev->bdev),
512+
discard_bio,disk_devt(mddev->gendisk),
513+
bio->bi_iter.bi_sector);
514+
submit_bio_noacct(discard_bio);
505515
}
506516
bio_endio(bio);
507517
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp