From: Christoph Hellwig <hch@lst.de>
To: Mike Snitzer <snitzer@redhat.com>
Cc: axboe@kernel.dk, dm-devel@redhat.com,
Christoph Hellwig <hch@lst.de>,
martin.petersen@oracle.com
Subject: Re: [RFC PATCH 2/2] dm: add support for splitting discard requests
Date: Sun, 27 Jun 2010 11:47:00 +0200 [thread overview]
Message-ID: <20100627094700.GE12016@lst.de> (raw)
In-Reply-To: <1277584285-13774-2-git-send-email-snitzer@redhat.com>
On Sat, Jun 26, 2010 at 04:31:25PM -0400, Mike Snitzer wrote:
> Enable the striped target to support discard requests by splitting a
> single discard into N discards on a stripe chunk size boundary.
>
> Follow on core block layer work to merge discards would be helpful.
>
> This work relies on DM's clone_bio() always having BIO_RW_BARRIER set
> for discard requests. Without BIO_RW_BARRIER the block layer will spew
> "blk: request botched" warnings for discards that were split by DM.
> - this clearly needs further investigation!
Btw, you can get discard requests from the upper layer that do not
have BIO_RW_BARRIER set, currently from the BLKDISCARD ioctl used by
various mkfs tools, and also from the not yet merged xfs discard
support.
Can I assume it works fine with those?
> - clone->bi_rw &= ~(1 << BIO_RW_BARRIER);
> + if (!bio_rw_flagged(bio, BIO_RW_DISCARD))
> + clone->bi_rw &= ~(1 << BIO_RW_BARRIER);
> + else if (!bio_rw_flagged(bio, BIO_RW_BARRIER)) {
> + /* discard w/o barrier results in "blk: request botched" */
> + clone->bi_rw |= (1 << BIO_RW_BARRIER);
> + }
So previously we unconditionally cleared the BIO_RW_BARRIER bit in the clone.
Maybe to make it cleared reorder the if a bit and also just set the
barrier bit unconditionally for discards, similar to how we
unconditionally clear it otherwise:
if (bio_rw_flagged(bio, BIO_RW_DISCARD)) {
/* discard w/o barrier results in "blk: request botched" */
clone->bi_rw |= (1 << BIO_RW_BARRIER);
} else {
clone->bi_rw &= ~(1 << BIO_RW_BARRIER);
}
maybe even with a slightly longer comment explaining what's actually
going on here, and a FIXME.
next prev parent reply other threads:[~2010-06-27 9:47 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-26 20:31 [PATCH 1/2 v2] dm: discard support for the linear target Mike Snitzer
2010-06-26 20:31 ` [RFC PATCH 2/2] dm: add support for splitting discard requests Mike Snitzer
2010-06-27 9:47 ` Christoph Hellwig [this message]
2010-06-27 13:59 ` Mike Snitzer
2010-06-27 9:49 ` [PATCH 1/2 v2] dm: discard support for the linear target Christoph Hellwig
2010-06-27 13:41 ` Mike Snitzer
2010-06-29 5:25 ` [PATCH 1/2 v3] " Mike Snitzer
2010-06-29 5:33 ` Mike Snitzer
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=20100627094700.GE12016@lst.de \
--to=hch@lst.de \
--cc=axboe@kernel.dk \
--cc=dm-devel@redhat.com \
--cc=martin.petersen@oracle.com \
--cc=snitzer@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.