From: NeilBrown <neilb@suse.com>
To: Shaohua Li <shli@fb.com>
Cc: linux-raid@vger.kernel.org
Subject: Re: [PATCH --resend 1/2] md: disable WRITE SAME if it fails for linear/raid0
Date: Tue, 14 Feb 2017 10:42:32 +1100 [thread overview]
Message-ID: <8737fh4pzr.fsf@notabene.neil.brown.name> (raw)
In-Reply-To: <c98a106b47626695f3b6976b616230da4b638df8.1487015420.git.shli@fb.com>
[-- Attachment #1: Type: text/plain, Size: 2568 bytes --]
On Mon, Feb 13 2017, Shaohua Li wrote:
> This makes md do the same thing as dm for write same IO failure. Please
> see 7eee4ae(dm: disable WRITE SAME if it fails) for details why we need
> this.
>
> Also reported here: https://bugzilla.kernel.org/show_bug.cgi?id=118581
>
> Signed-off-by: Shaohua Li <shli@fb.com>
> ---
> drivers/md/linear.c | 6 +++++-
> drivers/md/md.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
> drivers/md/md.h | 2 ++
> drivers/md/raid0.c | 6 +++++-
> 4 files changed, 57 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/md/linear.c b/drivers/md/linear.c
> index 26a73b2..bebc834 100644
> --- a/drivers/md/linear.c
> +++ b/drivers/md/linear.c
> @@ -291,7 +291,11 @@ static void linear_make_request(struct mddev *mddev, struct bio *bio)
> trace_block_bio_remap(bdev_get_queue(split->bi_bdev),
> split, disk_devt(mddev->gendisk),
> bio_sector);
> - generic_make_request(split);
> + if (bio_op(split) == REQ_OP_WRITE_SAME)
> + generic_make_request(md_writesame_setup(mddev,
> + split));
> + else
> + generic_make_request(split);
> }
> } while (split != bio);
> return;
> diff --git a/drivers/md/md.c b/drivers/md/md.c
> index 13020e5..7354f0b 100644
> --- a/drivers/md/md.c
> +++ b/drivers/md/md.c
> @@ -312,6 +312,51 @@ static blk_qc_t md_make_request(struct request_queue *q, struct bio *bio)
> return BLK_QC_T_NONE;
> }
>
> +struct md_writesame_data {
> + struct bio *orig_bio;
> + struct mddev *mddev;
> + struct bio cloned_bio;
> +};
> +
> +static void md_writesame_endio(struct bio *bio)
> +{
> + struct md_writesame_data *data = bio->bi_private;
> +
> + if (bio->bi_error == -EREMOTEIO &&
> + !bdev_get_queue(bio->bi_bdev)->limits.max_write_same_sectors)
> + data->mddev->queue->limits.max_write_same_sectors = 0;
What would be *really* nice is if a block device could send a
reconfigure message to its 'holder' (bd_holder). This could include
device size changes and, for this, changes to max_write_same_sectors.
There are probably other changes that can usefully be propagated.
But for this patch, wouldn't it be easier, and maybe more efficient, to
do
if (bio_op(split) == REQ_OP_WRITE_SAME &&
!bdev_get_queue(bio->bi_bdev)->limits.max_write_same_sectors)
mddev->queue->limits.max_write_same_sectors = 0;
generic_make_request(split);
???
If there is some reason that can't work, then the patch as it stands
look OK to me.
Thanks,
NeilBrown
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
next prev parent reply other threads:[~2017-02-13 23:42 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-13 19:55 [PATCH --resend 0/2] fix writesame Shaohua Li
2017-02-13 19:55 ` [PATCH --resend 1/2] md: disable WRITE SAME if it fails for linear/raid0 Shaohua Li
2017-02-13 23:42 ` NeilBrown [this message]
2017-02-14 0:04 ` Shaohua Li
2017-02-13 19:55 ` [PATCH --resend 2/2] md/multipath: disable WRITE SAME if it fails for multipath Shaohua Li
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8737fh4pzr.fsf@notabene.neil.brown.name \
--to=neilb@suse.com \
--cc=linux-raid@vger.kernel.org \
--cc=shli@fb.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).