All of lore.kernel.org
 help / color / mirror / Atom feed
From: Al Viro <viro@zeniv.linux.org.uk>
To: Jens Axboe <axboe@kernel.dk>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>,
	Linux Next Mailing List <linux-next@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Aleksa Sarai <cyphar@cyphar.com>
Subject: Re: linux-next: build failure after merge of the block tree
Date: Sun, 12 Jan 2020 18:32:35 +0000	[thread overview]
Message-ID: <20200112183235.GO8904@ZenIV.linux.org.uk> (raw)
In-Reply-To: <e9a87175-64c9-46da-4737-72987a53e836@kernel.dk>

On Mon, Jan 06, 2020 at 09:04:01PM -0700, Jens Axboe wrote:
> On 1/5/20 6:30 PM, Stephen Rothwell wrote:
> > Hi all,
> > 
> > After merging the block tree, today's linux-next build (arm
> > multi_v7_defconfig) failed like this:
> > 
> > fs/open.c:977:12: error: conflicting types for 'build_open_flags'
> >   977 | inline int build_open_flags(const struct open_how *how,
> >       |            ^~~~~~~~~~~~~~~~
> > In file included from /home/sfr/next/next/fs/open.c:36:
> > fs/internal.h:127:12: note: previous declaration of 'build_open_flags' was here
> >   127 | extern int build_open_flags(int flags, umode_t mode, struct open_flags *op);
> >       |            ^~~~~~~~~~~~~~~~
> > 
> > Caused by commits
> > 
> >   4e9e15c9426e ("fs: make build_open_flags() available internally")
> >   3bba3e571bc8 ("io_uring: add support for IORING_OP_OPENAT")
> > 
> > interacting with commit
> > 
> >   0a51692d49ec ("open: introduce openat2(2) syscall")
> > 
> > from the vfs tree.
> > 
> > I have applied the following fix up patch for today:
> 
> Thanks Stephen - I'll pull in the VFS tree and rebase the 5.6 io_uring
> bits on that. Then I'll send it out for review again, haven't heard from
> Al on the non-block open change.

FWIW, I don't believe that your approach is workable.  First of all,
*ANY* transition out of RCU mode can lead to blocking.  You need to
acquire several references (mount and dentry, at the very least).
Suppose the last one fails (->d_seq mismatch).  Now you suddenly
have to drop the one(s) you've acquired.  And both dput() and mntput()
are fundamentally blocking operations.

It simply does not work.  You could cobble up something that kinda-sorta
works, if your added flag had
	* caused hard failure on unlazy_child()
	* caused hard failure on unlazy_walk() with any symlinks in stack
	* caused hard failure on unlazy_walk() if it would've been required
to grab root
	* made unlazy_walk() go through very careful dance if it's just
about nd->path; I'm not sure how well that could be done, but theoretically
it's not impossible.

But for open() it's not going to work at all.  Any open for write => you
will have to wait if you run into fs freeze.  O_TRUNC => you've got IO
to do.  Worst of all, once you've dropped out of RCU mode, *YOU* *CAN'T*
*FAIL*.  Because that means blocking operations.  So you need to verify
that you won't run into a blocking ->open(), IMA deciding to play silly
buggers and read through the entire file, etc., etc. _before_ dropping
out of RCU mode.

do_last() is messy enough as it is; adding _this_ is completely out of
question.

Jens, if you have a workable plan on that non-blocking open of yours,
post it in full details.  Until then - NAK, and that's about as hard one
as I ever had to give.

  reply	other threads:[~2020-01-12 18:32 UTC|newest]

Thread overview: 279+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-06  1:30 linux-next: build failure after merge of the block tree Stephen Rothwell
2020-01-07  4:04 ` Jens Axboe
2020-01-12 18:32   ` Al Viro [this message]
2020-01-13 17:09     ` Jens Axboe
2020-01-13 17:26       ` Jens Axboe
  -- strict thread matches above, loose matches on Subject: below --
2024-05-10  3:10 Stephen Rothwell
2024-05-10  7:22 ` Damien Le Moal
2024-05-13 23:53 ` Stephen Rothwell
2023-12-21  3:01 Stephen Rothwell
2023-12-21  3:11 ` Jens Axboe
2023-12-21  5:25 ` Christoph Hellwig
2023-06-01  0:50 Stephen Rothwell
2023-06-01  8:27 ` Johannes Thumshirn
2023-06-01 15:14   ` Jens Axboe
2023-03-24  1:57 Stephen Rothwell
2023-03-22 23:33 Stephen Rothwell
2023-03-22 23:59 ` Stephen Rothwell
2023-01-19 23:07 Stephen Rothwell
2023-01-06  0:19 Stephen Rothwell
2023-01-06  2:53 ` Martin K. Petersen
2022-11-16  1:35 Stephen Rothwell
2022-10-04 21:50 Stephen Rothwell
2022-10-04 22:14 ` Jens Axboe
2022-08-22  4:46 Stephen Rothwell
2022-08-22 13:55 ` Jens Axboe
2022-08-22 15:34   ` Bart Van Assche
2022-08-22 15:40     ` Jens Axboe
2022-08-22 16:06       ` Bart Van Assche
2022-08-22 16:07         ` Jens Axboe
2022-07-27  4:09 Stephen Rothwell
2022-07-21  3:11 Stephen Rothwell
2022-07-21  4:23 ` Christoph Hellwig
2022-07-21 16:51 ` Jens Axboe
2022-07-15  4:02 Stephen Rothwell
2022-07-15  4:10 ` Al Viro
2022-07-15 14:42   ` Jens Axboe
2022-07-15 17:33     ` Linus Torvalds
2022-07-17  3:43       ` Al Viro
2022-05-23  2:49 Stephen Rothwell
2022-05-23  2:52 ` Jens Axboe
2022-05-23  6:05   ` Coly Li
2022-05-23 12:31     ` Jens Axboe
2022-05-04  1:40 Stephen Rothwell
2022-05-04 11:25 ` Jens Axboe
2022-03-09  2:16 Stephen Rothwell
2022-03-09  2:33 ` Jens Axboe
2022-03-09  2:42   ` Jens Axboe
2021-08-10 10:31 Stephen Rothwell
2021-08-10 10:52 ` Stephen Rothwell
2021-08-10 12:58 ` Christoph Hellwig
2021-08-10 13:01   ` Jens Axboe
2021-08-10 13:22   ` Stephen Rothwell
2021-02-23  1:42 Stephen Rothwell
2021-02-23  2:32 ` Jens Axboe
2021-02-02  2:57 Stephen Rothwell
2021-02-02  3:16 ` Stephen Rothwell
2021-02-02  6:55   ` Christoph Hellwig
2021-02-14 22:24   ` Stephen Rothwell
2020-12-14  4:18 Stephen Rothwell
2020-12-07  3:09 Stephen Rothwell
2020-12-07 20:09 ` Florent Revest
2020-12-14 20:29 ` Stephen Rothwell
2020-12-02  4:01 Stephen Rothwell
2020-12-02  7:19 ` Christoph Hellwig
2020-12-14 20:09 ` Stephen Rothwell
2020-12-14 20:12   ` Jens Axboe
2020-12-14 21:36     ` David Sterba
2020-12-14 21:43       ` Stephen Rothwell
2020-12-14 21:54         ` David Sterba
2020-12-14 22:01           ` Stephen Rothwell
2020-09-23  4:34 Stephen Rothwell
2020-07-15  2:14 Stephen Rothwell
2020-07-15  9:24 ` Geert Uytterhoeven
2020-07-15 15:08   ` Jens Axboe
2020-07-15 15:17     ` Geert Uytterhoeven
2020-07-15 15:22       ` Geert Uytterhoeven
2020-07-15 15:25         ` Jens Axboe
2020-07-15 15:08 ` Jens Axboe
2020-06-02  3:25 Stephen Rothwell
2020-05-25  5:08 Stephen Rothwell
2020-05-25 19:03 ` Jens Axboe
2020-05-26  4:36   ` Stephen Rothwell
2020-05-26 13:53     ` Jens Axboe
2020-05-22 11:32 Stephen Rothwell
2020-05-22 14:46 ` Jens Axboe
2020-05-14  8:57 Stephen Rothwell
2020-05-14 14:06 ` Jens Axboe
2020-05-11  4:27 Stephen Rothwell
2020-05-11 15:06 ` Jens Axboe
2020-05-11 15:17   ` Christoph Hellwig
2020-05-11 15:28     ` Jens Axboe
2020-05-08  5:28 Stephen Rothwell
2020-05-08 15:48 ` Jens Axboe
2020-03-12  2:54 Stephen Rothwell
2020-03-12 10:12 ` Matteo Croce
2020-03-12 13:07   ` Jens Axboe
2020-03-12 13:57     ` Matteo Croce
2020-03-13  7:24       ` Gao Xiang
2020-02-04  0:25 Stephen Rothwell
2020-02-04  0:28 ` Jens Axboe
2020-02-03  0:04 Stephen Rothwell
2020-02-03  4:12 ` Jens Axboe
2019-10-28  2:59 Stephen Rothwell
2019-10-28  3:25 ` Jens Axboe
2019-07-11  5:15 Stephen Rothwell
2019-07-11 20:17 ` Tejun Heo
2019-07-11 20:36   ` Jens Axboe
2019-07-11  5:04 Stephen Rothwell
2019-06-21  3:56 Stephen Rothwell
2019-06-21  8:18 ` Christoph Hellwig
2019-06-21  8:36   ` Stephen Rothwell
2019-05-06  5:07 Stephen Rothwell
2019-01-16  2:55 Stephen Rothwell
2019-01-16  2:48 Stephen Rothwell
2019-01-16  2:50 ` Ming Lei
2019-01-16  2:35 Stephen Rothwell
2019-01-16  2:48 ` Ming Lei
2018-07-31  3:07 Stephen Rothwell
2018-07-31 14:59 ` Jens Axboe
2018-07-26  4:56 Stephen Rothwell
2018-07-26  8:48 ` Christoph Hellwig
2018-07-26  8:45   ` Stephen Rothwell
2018-07-26 17:48   ` Jens Axboe
2018-07-26 17:56     ` Christoph Hellwig
2018-07-26 17:59       ` Steve Wise
2018-07-26 20:54     ` Bart Van Assche
2018-07-26 21:13       ` Jens Axboe
2018-07-26 12:32 ` Steve Wise
2018-07-26 22:16   ` Stephen Rothwell
2018-08-15  1:43 ` Stephen Rothwell
2017-08-24  3:32 Stephen Rothwell
2017-08-24  3:34 ` Stephen Rothwell
2017-08-24  8:44   ` Christoph Hellwig
2017-08-24  8:54     ` Stephen Rothwell
2017-06-28  8:04 Stephen Rothwell
2017-06-28 12:43 ` Jens Axboe
2017-06-28 14:01   ` Jens Axboe
2017-06-28 15:11     ` Jens Axboe
2017-06-28 21:33       ` Stephen Rothwell
2017-06-13 10:54 Stephen Rothwell
2017-06-15 14:50 ` Sebastian Ott
2017-06-19  9:00   ` Sebastian Ott
2017-06-20  1:45     ` Stephen Rothwell
2017-07-04 15:15 ` Guenter Roeck
2017-07-04 21:40   ` Stephen Rothwell
2017-06-13  4:10 Stephen Rothwell
2017-04-18  3:02 Stephen Rothwell
2017-05-02  1:07 ` Stephen Rothwell
2017-05-02  1:09   ` Jens Axboe
2017-05-02  1:37     ` Stephen Rothwell
2017-05-02  1:45       ` Jens Axboe
2017-01-30  1:43 Stephen Rothwell
2017-01-30  1:53 ` Jens Axboe
2017-01-30  3:07   ` Jens Axboe
2017-01-30  6:34   ` Christoph Hellwig
2016-12-01  2:55 Stephen Rothwell
2016-12-01  3:00 ` Jens Axboe
2016-12-01  3:02   ` Stephen Rothwell
2016-12-01  3:04     ` Jens Axboe
2016-11-08  3:21 Stephen Rothwell
2016-11-08  3:28 ` Jens Axboe
2016-09-19  6:18 Stephen Rothwell
2016-09-19 13:48 ` Christoph Hellwig
2016-09-19 14:22 ` Jens Axboe
2016-09-16  1:14 Stephen Rothwell
2016-09-16  4:13 ` Jens Axboe
2016-04-26  3:38 Stephen Rothwell
2016-04-26 13:30 ` Michal Marek
2016-04-26 13:56   ` Stephen Rothwell
     [not found]   ` <v3THaCMkCzylcv3TJavAje@videotron.ca>
2016-04-26 14:40     ` Nicolas Pitre
2016-04-26 14:41       ` Jens Axboe
2016-04-26 15:18       ` Stephen Rothwell
2016-04-26 20:48         ` Nicolas Pitre
2016-04-26 21:39           ` Stephen Rothwell
2016-04-27  9:02           ` Michal Marek
2016-04-27 13:46             ` Nicolas Pitre
2016-03-07  3:29 Stephen Rothwell
2015-12-02 16:19 Mark Brown
2015-12-02 16:45 ` Christoph Hellwig
2015-12-02 21:07   ` Jens Axboe
2015-12-02 21:14     ` Keith Busch
2015-12-02 21:27       ` Jens Axboe
2015-12-03  7:35         ` Christoph Hellwig
2015-12-03  8:39     ` Matias Bjørling
2015-12-03  9:06       ` Christoph Hellwig
2015-12-03  9:52         ` Matias Bjørling
2015-12-03  9:57           ` Christoph Hellwig
2015-12-03 10:09             ` Matias Bjørling
2015-12-03 10:21               ` Christoph Hellwig
2015-12-03 11:07                 ` Matias Bjørling
2015-12-03 16:42                   ` Christoph Hellwig
2015-12-04 12:16                     ` Matias Bjørling
2015-10-06  1:43 Stephen Rothwell
2015-10-06  1:54 ` kbuild test robot
2015-10-06  7:20 ` Ming Lei
2015-07-30  4:17 Stephen Rothwell
2015-07-30  6:19 ` Christoph Hellwig
2015-07-30 12:24   ` Stephen Rothwell
2015-07-30 14:38 ` Drokin, Oleg
2015-02-09  4:25 Stephen Rothwell
2015-01-21  3:45 Stephen Rothwell
2014-11-17  3:44 Stephen Rothwell
2014-11-17 19:51 ` Jens Axboe
2014-11-11  2:12 Stephen Rothwell
2014-11-11 11:20 ` Fabian Frederick
2014-11-11 15:27   ` Jens Axboe
2014-11-14 16:19     ` Fabian Frederick
2013-11-26  2:30 Stephen Rothwell
2013-11-04  3:13 Stephen Rothwell
2013-11-04  3:23 ` Jens Axboe
2013-11-04  3:32   ` Jens Axboe
2013-11-04  3:39   ` Stephen Rothwell
2013-11-01  4:01 Stephen Rothwell
2013-02-06  3:06 Stephen Rothwell
2013-02-06  3:06 ` Stephen Rothwell
2013-02-06  8:33 ` Jens Axboe
2012-10-10  1:14 Stephen Rothwell
2012-09-27  3:27 Stephen Rothwell
2012-09-27  7:37 ` Jens Axboe
2011-12-19  3:19 Stephen Rothwell
2011-12-19  9:37 ` Jens Axboe
2011-12-19 16:41   ` Tejun Heo
2011-12-19  9:45 ` Sedat Dilek
2011-12-19  9:48   ` Jens Axboe
2011-12-19 11:32     ` Stephen Rothwell
2011-12-16  1:50 Stephen Rothwell
2011-12-16  8:20 ` Jens Axboe
2011-09-17 11:18 Stephen Rothwell
2011-07-04  3:48 Stephen Rothwell
2011-06-01  1:01 Stephen Rothwell
2011-06-01  6:26 ` Jens Axboe
2011-06-01 13:43   ` Konrad Rzeszutek Wilk
2011-03-25  3:30 Stephen Rothwell
2011-03-25  4:08 ` Akinobu Mita
2011-03-25  5:25   ` Stephen Rothwell
2011-03-14  5:19 Stephen Rothwell
2011-03-16 23:32 ` Stephen Rothwell
2011-03-17 10:18   ` Jens Axboe
2011-03-17 10:36     ` David Woodhouse
2011-03-17 10:45       ` Jens Axboe
2011-03-21 23:33         ` Stephen Rothwell
2011-03-10  3:08 Stephen Rothwell
2011-03-10  7:15 ` Jens Axboe
2011-03-07  2:39 Stephen Rothwell
2011-01-07  0:05 Stephen Rothwell
2011-01-07  7:32 ` Jens Axboe
2011-01-07 10:52   ` Sedat Dilek
2011-01-07 12:17     ` Stephen Rothwell
2011-01-07 13:19       ` Sedat Dilek
2011-01-07 14:22         ` Stephen Rothwell
2011-01-07 15:08           ` Jens Axboe
2011-01-07 18:04             ` Sedat Dilek
2011-01-07 18:20               ` Sedat Dilek
2010-12-23  1:53 Stephen Rothwell
2010-12-23 22:36 ` Nicholas A. Bellinger
2010-10-11  3:18 Stephen Rothwell
2010-10-23  2:51 ` Stephen Rothwell
2010-09-17  1:37 Stephen Rothwell
2010-09-17  3:19 ` Christoph Hellwig
2010-08-09  1:28 Stephen Rothwell
2010-08-09  1:50 ` Jens Axboe
2010-08-05  1:47 Stephen Rothwell
2010-08-05  6:35 ` Jens Axboe
2010-08-03  3:12 Stephen Rothwell
2010-08-03  7:46 ` Jens Axboe
2010-08-03  8:26 ` Christoph Hellwig
2010-05-18  3:37 Stephen Rothwell
2010-05-18  8:56 ` Jens Axboe
2010-05-18 10:20   ` Stephen Rothwell
2010-05-18 10:50     ` Jens Axboe
2010-04-29  3:52 Stephen Rothwell
2010-04-29  7:31 ` Jens Axboe
2010-04-28  3:52 Stephen Rothwell
2010-04-28  5:34 ` Jens Axboe
2010-04-15  2:42 Stephen Rothwell
2010-04-15  5:23 ` Divyesh Shah
2010-04-15  6:16   ` Stephen Rothwell
2010-04-15  6:56     ` Jens Axboe
2010-02-23  2:26 Stephen Rothwell

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=20200112183235.GO8904@ZenIV.linux.org.uk \
    --to=viro@zeniv.linux.org.uk \
    --cc=axboe@kernel.dk \
    --cc=cyphar@cyphar.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-next@vger.kernel.org \
    --cc=sfr@canb.auug.org.au \
    /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.