[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20170420134356.GD22135@quack2.suse.cz>
Date: Thu, 20 Apr 2017 15:43:56 +0200
From: Jan Kara <jack@...e.cz>
To: Goldwyn Rodrigues <rgoldwyn@...e.de>
Cc: Christoph Hellwig <hch@...radead.org>,
linux-fsdevel@...r.kernel.org, jack@...e.com,
linux-block@...r.kernel.org, linux-btrfs@...r.kernel.org,
linux-ext4@...r.kernel.org, linux-xfs@...r.kernel.org,
sagi@...mberg.me, avi@...lladb.com, axboe@...nel.dk,
linux-api@...r.kernel.org, willy@...radead.org,
tom.leiming@...il.com, Goldwyn Rodrigues <rgoldwyn@...e.com>
Subject: Re: [PATCH 5/8] nowait aio: return on congested block device
On Wed 19-04-17 10:21:39, Goldwyn Rodrigues wrote:
>
>
> On 04/19/2017 01:45 AM, Christoph Hellwig wrote:
> >
> >> + if (bio->bi_opf & REQ_NOWAIT) {
> >> + if (!blk_queue_nowait(q)) {
> >> + err = -EOPNOTSUPP;
> >> + goto end_io;
> >> + }
> >> + if (!(bio->bi_opf & REQ_SYNC)) {
> >
> > I don't understand this check at all..
>
> It is to ensure at the block layer that NOWAIT comes only for DIRECT
> calls only. I should probably change it to REQ_SYNC | REQ_IDLE.
Ouch. Checking 'REQ_SYNC' for this is
a) unreliable hack
b) layering violation
You just don't care why someone marked bio with REQ_NOWAIT at this place.
Just obey the request if you can, return error if you cannot, but advisory
REQ_SYNC or REQ_IDLE flags have nothing to do with the ability of the block
layer to submit the bio without blocking...
Honza
--
Jan Kara <jack@...e.com>
SUSE Labs, CR
Powered by blists - more mailing lists