Kirill Smelkov
fea685000c
fuse: Add FOPEN_STREAM to use stream_open()
...
commit bbd84f3365 upstream.
Starting from commit 9c225f2655 ("vfs: atomic f_pos accesses as per
POSIX") files opened even via nonseekable_open gate read and write via lock
and do not allow them to be run simultaneously. This can create read vs
write deadlock if a filesystem is trying to implement a socket-like file
which is intended to be simultaneously used for both read and write from
filesystem client. See commit 10dce8af34 ("fs: stream_open - opener for
stream-like files so that read and write can run simultaneously without
deadlock") for details and e.g. commit 581d21a2d0 ("xenbus: fix deadlock
on writes to /proc/xen/xenbus") for a similar deadlock example on
/proc/xen/xenbus.
To avoid such deadlock it was tempting to adjust fuse_finish_open to use
stream_open instead of nonseekable_open on just FOPEN_NONSEEKABLE flags,
but grepping through Debian codesearch shows users of FOPEN_NONSEEKABLE,
and in particular GVFS which actually uses offset in its read and write
handlers
https://codesearch.debian.net/search?q=-%3Enonseekable+%3D
https://gitlab.gnome.org/GNOME/gvfs/blob/1.40.0-6-gcbc54396/client/gvfsfusedaemon.c#L1080
https://gitlab.gnome.org/GNOME/gvfs/blob/1.40.0-6-gcbc54396/client/gvfsfusedaemon.c#L1247-1346
https://gitlab.gnome.org/GNOME/gvfs/blob/1.40.0-6-gcbc54396/client/gvfsfusedaemon.c#L1399-1481
so if we would do such a change it will break a real user.
Add another flag (FOPEN_STREAM) for filesystem servers to indicate that the
opened handler is having stream-like semantics; does not use file position
and thus the kernel is free to issue simultaneous read and write request on
opened file handle.
This patch together with stream_open() should be added to stable kernels
starting from v3.14+. This will allow to patch OSSPD and other FUSE
filesystems that provide stream-like files to return FOPEN_STREAM |
FOPEN_NONSEEKABLE in open handler and this way avoid the deadlock on all
kernel versions. This should work because fuse_finish_open ignores unknown
open flags returned from a filesystem and so passing FOPEN_STREAM to a
kernel that is not aware of this flag cannot hurt. In turn the kernel that
is not aware of FOPEN_STREAM will be < v3.14 where just FOPEN_NONSEEKABLE
is sufficient to implement streams without read vs write deadlock.
Cc: stable@vger.kernel.org # v3.14+
Signed-off-by: Kirill Smelkov <kirr@nexedi.com >
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com >
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2019-05-25 18:23:40 +02:00
..
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2018-01-16 15:11:32 +01:00
2017-11-02 11:20:11 +01:00
2018-07-30 16:21:49 -04:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2018-07-23 19:18:10 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2019-04-20 09:16:00 +02:00
2017-11-02 11:19:54 +01:00
2018-04-24 10:29:18 +02:00
2017-11-02 11:20:11 +01:00
2018-05-06 23:33:03 +02:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 10:04:46 -07:00
2017-11-02 11:19:54 +01:00
2018-07-19 23:26:01 -07:00
2018-02-21 13:15:33 -05:00
2018-08-18 10:21:49 -07:00
2017-05-11 00:21:54 +09:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2015-12-10 12:33:23 +01:00
2018-08-06 10:24:33 +02:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2018-01-13 10:44:56 +00:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2018-08-15 22:54:12 -07:00
2017-11-02 11:20:11 +01:00
2018-06-07 17:34:39 -07:00
2018-08-22 10:52:49 -07:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2018-02-27 13:02:54 +01:00
2018-03-14 10:15:34 +01:00
2017-11-02 11:19:54 +01:00
2018-08-11 15:46:41 -06:00
2017-11-02 11:19:54 +01:00
2017-11-27 13:05:09 -08:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2018-03-30 14:16:24 -06:00
2018-07-09 09:07:52 -06:00
2018-01-18 22:12:38 +01:00
2018-03-08 02:22:34 +01:00
2018-08-13 01:02:39 +02:00
2018-05-23 13:23:40 -04:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2018-07-20 10:25:48 +02:00
2018-01-22 16:08:21 +01:00
2018-05-31 11:35:24 +02:00
2018-07-27 10:40:16 +02:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2018-02-14 13:23:51 -05:00
2018-11-13 11:08:53 -08:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2018-05-01 14:25:37 -04:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2018-04-11 10:28:38 -07:00
2017-11-02 11:19:54 +01:00
2017-11-17 13:20:41 -08:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2018-07-29 12:53:54 -07:00
2017-11-02 11:19:54 +01:00
2018-07-12 17:37:13 -07:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2018-04-04 12:12:38 -04:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2018-07-19 13:58:44 -07:00
2017-11-02 11:19:54 +01:00
2018-07-04 22:30:28 +09:00
2018-01-25 21:39:43 -05:00
2018-08-07 12:15:03 -07:00
2018-07-15 14:03:06 +02:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-14 14:13:11 -08:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2018-02-28 22:44:43 -05:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2018-07-15 13:55:47 +02:00
2018-11-13 11:08:46 -08:00
2018-06-18 15:11:53 +10:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2019-05-25 18:23:40 +02:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2018-01-23 07:39:20 -07:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-12-03 20:47:33 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2018-05-29 10:12:45 -04:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2018-03-23 11:31:58 -04:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2018-04-23 11:10:33 -04:00
2018-07-29 12:57:26 -07:00
2017-11-02 11:19:54 +01:00
2018-01-22 15:40:16 -05:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2018-01-17 15:32:10 -05:00
2017-12-15 12:34:00 -05:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2018-06-08 00:18:02 +02:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2018-06-29 11:32:55 +09:00
2017-11-04 09:26:51 +09:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2019-02-27 10:08:58 +01:00
2018-06-27 19:21:25 +02:00
2019-01-13 09:50:56 +01:00
2019-01-31 08:14:42 +01:00
2017-11-02 11:19:54 +01:00
2017-11-04 09:26:51 +09:00
2017-11-02 11:19:54 +01:00
2018-07-29 12:37:06 -07:00
2017-11-02 11:19:54 +01:00
2018-02-26 09:49:21 -06:00
2018-02-27 07:42:51 -06:00
2018-02-27 07:42:51 -06:00
2017-11-02 11:19:54 +01:00
2017-11-04 09:26:51 +09:00
2017-11-11 15:13:02 +09:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-14 14:13:11 -08:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2018-07-26 17:04:37 -07:00
2017-05-11 00:21:54 +09:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-17 16:10:04 -08:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2018-06-07 17:34:37 -07:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2018-07-07 17:41:38 +02:00
2018-09-25 13:28:58 +02:00
2018-11-21 09:19:23 +01:00
2018-08-06 17:59:22 +02:00
2018-09-20 00:51:46 +02:00
2018-08-03 10:03:57 -07:00
2018-02-13 11:23:24 -05:00
2018-01-05 08:50:12 -07:00
2017-11-02 11:19:54 +01:00
2018-04-20 09:15:18 -04:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-28 16:54:00 +01:00
2017-11-02 11:19:54 +01:00
2017-11-13 15:38:16 +00:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2018-08-02 06:04:57 -04:00
2018-07-27 07:52:39 -04:00
2017-11-02 11:20:11 +01:00
2018-02-05 21:35:03 +01:00
2018-10-05 16:32:04 -07:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2018-07-24 14:41:08 -07:00
2017-11-02 11:19:54 +01:00
2018-10-05 16:32:04 -07:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2018-07-13 14:21:16 -07:00
2018-03-17 14:45:23 -06:00
2018-04-11 10:28:37 -07:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2018-06-20 19:10:06 -06:00
2018-03-05 10:43:37 -05:00
2018-11-13 11:08:32 -08:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2019-01-09 17:38:36 +01:00
2017-11-02 11:20:11 +01:00
2018-07-29 12:37:06 -07:00
2017-11-02 11:20:11 +01:00
2018-01-08 18:01:08 +01:00
2018-11-27 16:13:01 +01:00
2018-01-08 18:01:08 +01:00
2018-01-11 13:14:20 +01:00
2018-01-11 13:14:20 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-10 00:03:39 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2015-04-23 15:16:14 -04:00
2017-11-02 11:19:54 +01:00
2018-01-14 23:06:30 -05:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2018-06-30 21:08:12 +09:00
2017-11-02 11:19:54 +01:00
2018-01-16 16:47:29 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2018-05-09 16:37:05 -04:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2018-07-08 11:13:25 +09:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2018-08-15 14:59:06 -05:00
2017-11-02 11:19:54 +01:00
2018-07-19 11:46:57 +01:00
2018-09-10 10:03:02 +02:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2018-08-07 12:22:15 -07:00
2018-07-24 14:44:00 -07:00
2017-11-02 11:20:11 +01:00
2018-07-31 19:56:42 +10:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2018-08-11 12:13:49 -07:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2018-12-05 19:32:04 +01:00
2017-11-02 11:19:54 +01:00
2018-02-06 22:53:56 +00:00
2018-05-31 00:13:56 +08:00
2017-11-02 11:20:11 +01:00
2018-02-21 16:56:03 -08:00
2018-03-20 03:17:41 +02:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-04 09:26:51 +09:00
2017-08-14 11:53:34 +02:00
2017-11-02 11:19:54 +01:00
2018-04-14 11:59:31 -04:00
2017-11-02 11:19:54 +01:00
2018-09-02 16:14:44 -07:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2016-02-24 09:04:25 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2018-06-03 17:37:16 -07:00
2018-07-10 22:18:52 +02:00
2017-11-02 11:19:54 +01:00
2018-07-23 20:44:12 -07:00
2017-11-24 10:18:41 +00:00
2017-11-02 11:19:54 +01:00
2018-01-10 11:30:31 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2018-11-23 08:17:06 +01:00
2017-11-02 11:20:11 +01:00
2018-05-05 00:51:44 +02:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2018-05-24 11:57:36 +02:00
2017-11-16 10:49:00 +09:00
2017-11-02 11:20:11 +01:00
2018-04-11 10:28:37 -07:00
2018-03-09 11:01:19 -08:00
2017-11-13 21:05:31 -08:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2018-10-05 16:32:04 -07:00
2017-11-02 11:19:54 +01:00
2018-04-26 19:51:12 -05:00
2018-10-07 21:06:28 -07:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2018-08-05 17:16:46 -07:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-07 10:32:44 +01:00
2018-03-28 18:47:18 +03:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-12-18 23:08:11 -06:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2018-08-13 08:42:25 -07:00
2017-11-02 11:19:54 +01:00
2018-06-18 21:02:52 -04:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2018-08-01 09:56:10 -07:00
2017-12-21 17:23:52 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2018-06-24 14:39:46 +02:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2018-04-20 11:04:05 -04:00
2018-06-30 21:05:42 +09:00
2018-03-22 14:43:35 -04:00
2018-04-27 11:05:41 -04:00
2018-04-23 11:10:33 -04:00
2017-11-02 11:20:11 +01:00
2018-05-24 18:38:51 +02:00
2017-11-02 11:19:54 +01:00
2018-05-26 09:16:44 +02:00
2017-11-02 11:20:11 +01:00
2018-10-08 15:45:18 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-12-12 13:16:07 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2018-02-06 18:32:44 -08:00
2018-07-27 06:39:57 -04:00
2017-11-02 11:20:11 +01:00
2018-07-04 09:32:22 -04:00
2017-11-02 11:20:11 +01:00
2018-02-26 08:15:50 -05:00
2018-07-24 17:39:28 -04:00
2017-12-18 16:12:21 +01:00
2017-12-18 16:12:21 +01:00
2017-12-18 16:12:21 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2018-03-26 13:22:58 -06:00
2018-09-03 21:23:24 -07:00
2018-11-13 11:08:54 -08:00
2018-04-24 21:44:01 +03:00
2016-03-02 17:01:59 +02:00
2018-06-12 04:59:29 +03:00
2014-12-09 12:06:32 +02:00
2016-12-16 00:13:32 +02:00
2018-05-14 11:01:29 +02:00
2016-12-16 00:13:32 +02:00
2015-03-29 12:13:52 +10:30
2017-02-27 16:31:23 +02:00
2018-05-28 22:59:54 -04:00
2017-04-11 00:28:41 +03:00
2017-08-24 09:57:28 +02:00
2015-03-13 15:55:43 +10:30
2016-12-16 00:13:41 +02:00
2016-08-09 13:42:38 +03:00
2017-11-26 04:24:48 +09:00
2017-11-02 11:20:11 +01:00
2018-05-14 13:46:04 -04:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:19:54 +01:00
2017-11-03 16:34:00 -07:00
2017-11-02 11:19:54 +01:00
2017-11-13 10:41:25 -08:00
2018-06-23 16:07:15 +02:00
2017-11-02 11:20:11 +01:00
2017-11-02 11:19:54 +01:00
2017-11-02 11:20:11 +01:00