Linux-Fsdevel Archive on lore.kernel.org
 help / color / Atom feed
From: Kirill Smelkov <kirr@nexedi.com>
To: Sasha Levin <sashal@kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Miklos Szeredi <miklos@szeredi.hu>,
	<linux-fsdevel@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Michael Kerrisk <mtk.manpages@gmail.com>,
	Yongzhi Pan <panyongzhi@gmail.com>,
	Jonathan Corbet <corbet@lwn.net>,
	David Vrabel <david.vrabel@citrix.com>,
	Juergen Gross <jgross@suse.com>, Tejun Heo <tj@kernel.org>,
	Kirill Tkhai <ktkhai@virtuozzo.com>,
	Arnd Bergmann <arnd@arndb.de>, Christoph Hellwig <hch@lst.de>,
	Julia Lawall <Julia.Lawall@lip6.fr>,
	Nikolaus Rath <Nikolaus@rath.org>,
	Han-Wen Nienhuys <hanwen@google.com>, <stable@vger.kernel.org>
Subject: Re: [RESEND, PATCH 3/3] fuse: Add FOPEN_STREAM and use stream_open() if filesystem returned that from open handler
Date: Wed, 24 Apr 2019 19:16:59 +0000
Message-ID: <20190424191652.GE3798@deco.navytux.spb.ru> (raw)
In-Reply-To: <20190424160611.2A71321900@mail.kernel.org>

Hello up there,

On Wed, Apr 24, 2019 at 04:06:10PM +0000, Sasha Levin wrote:
> Hi,
>
> [This is an automated email]
>
> This commit has been processed because it contains a -stable tag.
> The stable tag indicates that it's relevant for the following trees: 3.14+
>
> The bot has tested the following trees: v5.0.9, v4.19.36, v4.14.113, v4.9.170, v4.4.178, v3.18.138.
>
> v5.0.9: Build failed! Errors:
>     fs/fuse/file.c:185:3: error: implicit declaration of function ‘stream_open’; did you mean ‘seq_open’? [-Werror=implicit-function-declaration]

This patch needs "fs: stream_open - opener for stream-like files so that
read and write can run simultaneously without deadlock" (10dce8af3422)
as its dependency. It documents so in its commit message. That base
dependency patch is being discussed here in stable context:

https://lore.kernel.org/linux-fsdevel/20190424183012.GB3798@deco.navytux.spb.ru/


> v4.19.36: Failed to apply! Possible dependencies:
>     6433b8998a21 ("fuse: add FOPEN_CACHE_DIR")
>     88bc7d5097a1 ("fuse: add support for copy_file_range()")

"fuse: add FOPEN_CACHE_DIR" added another nearby constant. The conflict
with that patch should be trivially resolvable (just add FOPEN_STREAM
irregardless that there is no FOPEN_CACHE_DIR in context).

> v4.14.113: Failed to apply! Possible dependencies:
>     3b7008b226f3 ("fuse: return -ECONNABORTED on /dev/fuse read after abort")
>     6433b8998a21 ("fuse: add FOPEN_CACHE_DIR")
>     88bc7d5097a1 ("fuse: add support for copy_file_range()")

same.

> v4.9.170: Failed to apply! Possible dependencies:
>     3b7008b226f3 ("fuse: return -ECONNABORTED on /dev/fuse read after abort")
>     6433b8998a21 ("fuse: add FOPEN_CACHE_DIR")
>     88bc7d5097a1 ("fuse: add support for copy_file_range()")

----//----

> v4.4.178: Failed to apply! Possible dependencies:
>     29433a2991fa ("fuse: get rid of fc->flags")
>     3767e255b390 ("switch ->setxattr() to passing dentry and inode separately")
>     60bcc88ad185 ("fuse: Add posix ACL support")
>     6192269444eb ("introduce a parallel variant of ->iterate()")
>     6433b8998a21 ("fuse: add FOPEN_CACHE_DIR")
>     6b2553918d8b ("replace ->follow_link() with new method that could stay in RCU mode")
>     703c73629f93 ("fuse: Use generic xattr ops")
>     84e710da2a1d ("parallel lookups machinery, part 2")
>     88bc7d5097a1 ("fuse: add support for copy_file_range()")
>     9902af79c01a ("parallel lookups: actual switch to rwsem")
>     9cf843e3f47c ("lookup_open(): lock the parent shared unless O_CREAT is given")
>     aa80deab33a8 ("namei: page_getlink() and page_follow_link_light() are the same thing")
>     cd3417c8fc95 ("kill free_page_put_link()")
>     ce23e6401334 ("->getxattr(): pass dentry and inode as separate arguments")
>     fceef393a538 ("switch ->get_link() to delayed_call, kill ->put_link()")

similar

> v3.18.138: Failed to apply! Possible dependencies:
>     09561a53b50d ("lustre: use %p[dD]")
>     29433a2991fa ("fuse: get rid of fc->flags")
>     2b0143b5c986 ("VFS: normal filesystems (and lustre): d_inode() annotations")
>     3767e255b390 ("switch ->setxattr() to passing dentry and inode separately")
>     60bcc88ad185 ("fuse: Add posix ACL support")
>     6192269444eb ("introduce a parallel variant of ->iterate()")
>     6433b8998a21 ("fuse: add FOPEN_CACHE_DIR")
>     680baacbca69 ("new ->follow_link() and ->put_link() calling conventions")
>     6b2553918d8b ("replace ->follow_link() with new method that could stay in RCU mode")
>     6e77137b363b ("don't pass nameidata to ->follow_link()")
>     703c73629f93 ("fuse: Use generic xattr ops")
>     84e710da2a1d ("parallel lookups machinery, part 2")
>     88bc7d5097a1 ("fuse: add support for copy_file_range()")
>     90e4fc8890da ("9p: don't bother with __getname() in ->follow_link()")
>     9902af79c01a ("parallel lookups: actual switch to rwsem")
>     9cf843e3f47c ("lookup_open(): lock the parent shared unless O_CREAT is given")
>     a06ae8609b3d ("coresight: add CoreSight core layer framework")
>     ce23e6401334 ("->getxattr(): pass dentry and inode as separate arguments")
>     dab363f938a5 ("Merge tag 'staging-3.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging")
>     fceef393a538 ("switch ->get_link() to delayed_call, kill ->put_link()")

similar

> How should we proceed with this patch?

I have backported this patch to above those stable trees. You can pull
the result from https://lab.nexedi.com/kirr/linux.git, branches:

	fopen_stream-5.0.y
	fopen_stream-4.19.y
	fopen_stream-4.14.y
	fopen_stream-4.4.y
		( actually fixed deadlock on /proc/xen/xenbus as
		  581d21a2d02a was not backported to 4.4 )
	fopen_stream-3.18.y
		( actually fixed deadlock on /proc/xen/xenbus as
		  581d21a2d02a was not backported to 3.18 )


Hope it helps a bit,

Kirill

P.S.

The fact that 4.4 and 3.18 versions of stream_open patch had to
resolve xenbus conflict in a way that actually fixes /proc/xen/xenbus
deadlock (introduced in 3.14) suggests that deadlock error messages
produced by stream_open.cocci should indeed be considered by relevant
maintainers including stable team...


  parent reply index

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-26 22:20 [PATCH 1/3] fs: stream_open - opener for stream-like files so that read and write can run simultaneously without deadlock Kirill Smelkov
2019-03-26 23:22 ` [PATCH 3/3] fuse: Add FOPEN_STREAM and use stream_open() if filesystem returned that from open handler Kirill Smelkov
2019-04-24  7:13   ` [RESEND, PATCH " Kirill Smelkov
     [not found]     ` <20190424160611.2A71321900@mail.kernel.org>
2019-04-24 19:16       ` Kirill Smelkov [this message]
     [not found] ` <8794193f3040b798010970228d978c05ad56ec52.1553637462.git.kirr@nexedi.com>
2019-03-27  6:54   ` [PATCH 2/3] *: convert stream-like files from nonseekable_open -> stream_open Lubomir Rintel
2019-03-27 16:58 ` [PATCH 1/3] fs: stream_open - opener for stream-like files so that read and write can run simultaneously without deadlock Juergen Gross
2019-04-06 17:07 ` Linus Torvalds
2019-04-07 20:04   ` Kirill Smelkov
2019-04-08  0:09     ` Linus Torvalds
2019-04-14  7:11       ` Kirill Smelkov
     [not found] ` <4c4651e2-167e-bfcc-7b3e-cda118f98a69@rasmusvillemoes.dk>
     [not found]   ` <20190409203807.GA13855@deco.navytux.spb.ru>
     [not found]     ` <d8c23d05-8810-13a2-cc50-7a47ff35e90b@rasmusvillemoes.dk>
2019-04-11 12:38       ` Kirill Smelkov
2019-04-11 16:22         ` Linus Torvalds
2019-04-12 12:42           ` Kirill Smelkov
2019-04-13 16:54             ` Kirill Smelkov
2019-04-13 16:54               ` [PATCH 1/2] vfs: pass ppos=NULL to .read()/.write() of FMODE_STREAM files Kirill Smelkov
2019-04-13 17:27                 ` Linus Torvalds
2019-04-13 17:38                   ` Al Viro
2019-04-13 18:44                   ` Kirill Smelkov
2019-04-13 16:55               ` [PATCH 2/2] vfs: use &file->f_pos directly on files that have position Kirill Smelkov

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=20190424191652.GE3798@deco.navytux.spb.ru \
    --to=kirr@nexedi.com \
    --cc=Julia.Lawall@lip6.fr \
    --cc=Nikolaus@rath.org \
    --cc=arnd@arndb.de \
    --cc=corbet@lwn.net \
    --cc=david.vrabel@citrix.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hanwen@google.com \
    --cc=hch@lst.de \
    --cc=jgross@suse.com \
    --cc=ktkhai@virtuozzo.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=miklos@szeredi.hu \
    --cc=mtk.manpages@gmail.com \
    --cc=panyongzhi@gmail.com \
    --cc=sashal@kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=tj@kernel.org \
    --cc=torvalds@linux-foundation.org \
    --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

Linux-Fsdevel Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-fsdevel/0 linux-fsdevel/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 linux-fsdevel linux-fsdevel/ https://lore.kernel.org/linux-fsdevel \
		linux-fsdevel@vger.kernel.org
	public-inbox-index linux-fsdevel

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-fsdevel


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