IO-Uring Archive on lore.kernel.org
 help / color / Atom feed
* [GIT PULL] Fixes for 5.4-rc8/final
@ 2019-11-15 19:40 Jens Axboe
  2019-11-15 21:17 ` Linus Torvalds
  2019-11-15 22:20 ` pr-tracker-bot
  0 siblings, 2 replies; 4+ messages in thread
From: Jens Axboe @ 2019-11-15 19:40 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-block, io-uring

Hi Linus,

We have a few fixes that should make it into this release. This pull
request contains:

- io_uring:
	- The timeout command assumes sequence == 0 means that we want
	  one completion, but this kind of overloading is unfortunate as
	  it prevents users from doing a pure time based wait. Since
	  this operation was introduced in this cycle, let's correct it
	  now, while we can. (me)
	- One-liner to fix an issue with dependent links and fixed
	  buffer reads. The actual IO completed fine, but the link got
	  severed since we stored the wrong expected value. (me)
	- Add TIMEOUT to list of opcodes that don't need a file. (Pavel)

- rsxx missing workqueue destry calls. Old bug. (Chuhong)

- Fix blk-iocost active list check (Jiufei)

- Fix impossible-to-hit overflow merge condition, that still hit some
  folks very rarely (Junichi)

- Fix bfq hang issue from 5.3. This didn't get marked for stable, but
  will go into stable post this merge (Paolo)

Please pull!


  git://git.kernel.dk/linux-block.git tags/for-linus-20191115


----------------------------------------------------------------
Chuhong Yuan (1):
      rsxx: add missed destroy_workqueue calls in remove

Jens Axboe (2):
      io_uring: make timeout sequence == 0 mean no sequence
      io_uring: ensure registered buffer import returns the IO length

Jiufei Xue (1):
      iocost: check active_list of all the ancestors in iocg_activate()

Junichi Nomura (1):
      block: check bi_size overflow before merge

Paolo Valente (1):
      block, bfq: deschedule empty bfq_queues not referred by any process

Pavel Begunkov (1):
      io_uring: Fix getting file for timeout

 block/bfq-iosched.c       | 32 ++++++++++++++++++++++++++------
 block/bio.c               |  2 +-
 block/blk-iocost.c        |  8 ++++++--
 drivers/block/rsxx/core.c |  2 ++
 fs/io_uring.c             | 32 ++++++++++++++++++++++++--------
 5 files changed, 59 insertions(+), 17 deletions(-)

-- 
Jens Axboe


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [GIT PULL] Fixes for 5.4-rc8/final
  2019-11-15 19:40 [GIT PULL] Fixes for 5.4-rc8/final Jens Axboe
@ 2019-11-15 21:17 ` Linus Torvalds
  2019-11-15 21:21   ` Jens Axboe
  2019-11-15 22:20 ` pr-tracker-bot
  1 sibling, 1 reply; 4+ messages in thread
From: Linus Torvalds @ 2019-11-15 21:17 UTC (permalink / raw)
  To: Jens Axboe; +Cc: linux-block, io-uring

On Fri, Nov 15, 2019 at 11:40 AM Jens Axboe <axboe@kernel.dk> wrote:
>
> - Fix impossible-to-hit overflow merge condition, that still hit some
>   folks very rarely (Junichi)

Hmm. This sounded intriguing, so I looked at it.

It sounds like the 32-bit "bi_size" overflowed, which is one of the
things that bio_full() checks for.

However.

Looking at the *users* of bio_full(), it's not obvious that everything
is ok. For example, in __bio_add_pc_page(), the code does that

        if (((bio->bi_iter.bi_size + len) >> 9) > queue_max_hw_sectors(q))
                return 0;

*before* checking for the overflow condition.

So it could cause that bio_try_merge_pc_page() to be done despite the
overflow, and happily that path ends up having the bio_full() test
later anyway, but it does look a bit worrisome.

There's also __bio_add_page(), which does have a WARN_ON_ONCE(), but
then goes on and does the bi_size update regardless. Hmm.. It does
look like all callers either check bio_full() before, or do it with a
newly allocated bio.

             Linus

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [GIT PULL] Fixes for 5.4-rc8/final
  2019-11-15 21:17 ` Linus Torvalds
@ 2019-11-15 21:21   ` Jens Axboe
  0 siblings, 0 replies; 4+ messages in thread
From: Jens Axboe @ 2019-11-15 21:21 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-block, io-uring

On 11/15/19 2:17 PM, Linus Torvalds wrote:
> On Fri, Nov 15, 2019 at 11:40 AM Jens Axboe <axboe@kernel.dk> wrote:
>>
>> - Fix impossible-to-hit overflow merge condition, that still hit some
>>    folks very rarely (Junichi)
> 
> Hmm. This sounded intriguing, so I looked at it.
> 
> It sounds like the 32-bit "bi_size" overflowed, which is one of the
> things that bio_full() checks for.
> 
> However.
> 
> Looking at the *users* of bio_full(), it's not obvious that everything
> is ok. For example, in __bio_add_pc_page(), the code does that
> 
>          if (((bio->bi_iter.bi_size + len) >> 9) > queue_max_hw_sectors(q))
>                  return 0;
> 
> *before* checking for the overflow condition.
> 
> So it could cause that bio_try_merge_pc_page() to be done despite the
> overflow, and happily that path ends up having the bio_full() test
> later anyway, but it does look a bit worrisome.
> 
> There's also __bio_add_page(), which does have a WARN_ON_ONCE(), but
> then goes on and does the bi_size update regardless. Hmm.. It does
> look like all callers either check bio_full() before, or do it with a
> newly allocated bio.

We'll go over these asap. As a note, the 'pc' variants are not for
normal file system IO, they are only for requests submitted through some
sort of packet command, generally ioctls and such. Should of course be
correct, but it's not as critical as the normal IO path.

-- 
Jens Axboe


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [GIT PULL] Fixes for 5.4-rc8/final
  2019-11-15 19:40 [GIT PULL] Fixes for 5.4-rc8/final Jens Axboe
  2019-11-15 21:17 ` Linus Torvalds
@ 2019-11-15 22:20 ` pr-tracker-bot
  1 sibling, 0 replies; 4+ messages in thread
From: pr-tracker-bot @ 2019-11-15 22:20 UTC (permalink / raw)
  To: Jens Axboe; +Cc: Linus Torvalds, linux-block, io-uring

The pull request you sent on Fri, 15 Nov 2019 12:40:46 -0700:

> git://git.kernel.dk/linux-block.git tags/for-linus-20191115

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/b226c9e1f4cb23bf6fa6c74af361e5136cb5804c

Thank you!

-- 
Deet-doot-dot, I am a bot.
https://korg.wiki.kernel.org/userdoc/prtracker

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, back to index

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-15 19:40 [GIT PULL] Fixes for 5.4-rc8/final Jens Axboe
2019-11-15 21:17 ` Linus Torvalds
2019-11-15 21:21   ` Jens Axboe
2019-11-15 22:20 ` pr-tracker-bot

IO-Uring Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/io-uring/0 io-uring/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 io-uring io-uring/ https://lore.kernel.org/io-uring \
		io-uring@vger.kernel.org
	public-inbox-index io-uring

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.io-uring


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git