From: Jens Axboe <axboe@kernel.dk>
To: Al Viro <viro@zeniv.linux.org.uk>
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: Mon, 13 Jan 2020 10:26:04 -0700 [thread overview]
Message-ID: <889551c4-c4a7-dc49-c3b2-7c5ff5c8c0e7@kernel.dk> (raw)
In-Reply-To: <b177c427-ca94-bbbf-b09d-6f2faef4121c@kernel.dk>
On 1/13/20 10:09 AM, Jens Axboe wrote:
> On 1/12/20 11:32 AM, Al Viro wrote:
>> 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.
>
> Thanks Al, that's useful! Sounds like the lookup is doable, but the open
> part is just a wasp nest of "don't even go there". For now, I'll drop
> the lookup change and just have the io_uring open punt to async. With
> that, I don't need any non-blocking guarantees. That is workable for
> now.
Forgot to mention, I'll implement your addition for the lookup part,
since I still need that for the statx addition. But the open itself
will not use any of that, I'll leave that as-is and just go async.
--
Jens Axboe
next prev parent reply other threads:[~2020-01-13 17:26 UTC|newest]
Thread overview: 275+ 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
2020-01-13 17:09 ` Jens Axboe
2020-01-13 17:26 ` Jens Axboe [this message]
-- strict thread matches above, loose matches on Subject: below --
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 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=889551c4-c4a7-dc49-c3b2-7c5ff5c8c0e7@kernel.dk \
--to=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 \
--cc=viro@zeniv.linux.org.uk \
/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).