mbox series

[0/2,SRU,XENIAL] Fix non-prefaulted page deadlock

Message ID 20180328153940.10077-1-colin.king@canonical.com
Headers show
Series Fix non-prefaulted page deadlock | expand

Message

Colin Ian King March 28, 2018, 3:39 p.m. UTC
From: Colin Ian King <colin.king@canonical.com>

BugLink: https://bugs.launchpad.net/bugs/1754584

SRU Request [Xenial]

== Justification ==

It is possible to hang zfs asynchronous reads if a read to a page that
is mmap'd onto the the file being read is the same offset in the
mapping as in the file. This is caused by two lock operations on the page.

== Fix ==

Upstream ZFS hot-fix to ensure the page is not double-locked during async
I/O of one or more pages.

== Testing ==

Create a zfs pool + zfs file system, run the reproducer program in comment
#28 on the zfs filesystem. Without the fix this can lock up, with the fix
this runs to completion.

== Regression Potential ==

Minimal, the locking fix addresses a fundamental bug in the locking and
this should not affect ZFS read/write I/O with this fix.

Colin Ian King (2):
  UBUNTU: SAUCE: (noup) Update zfs to 0.6.5.11-1ubuntu3.2
  UBUNTU: SAUCE: Fix non-prefaulted page deadlock (LP: #1754584)

 zfs/META                          |  2 +-
 zfs/Makefile.in                   |  2 ++
 zfs/aclocal.m4                    |  1 +
 zfs/config/user-libaio.m4         | 14 ++++++++
 zfs/config/user.m4                |  1 +
 zfs/config/zfs-build.m4           |  2 ++
 zfs/configure                     | 71 +++++++++++++++++++++++++++++++++++++++
 zfs/include/Makefile.in           |  2 ++
 zfs/include/linux/Makefile.in     |  2 ++
 zfs/include/sys/Makefile.in       |  2 ++
 zfs/include/sys/fm/Makefile.in    |  2 ++
 zfs/include/sys/fm/fs/Makefile.in |  2 ++
 zfs/include/sys/fs/Makefile.in    |  2 ++
 zfs/include/sys/zfs_ioctl.h       | 62 ++++++++++++++++++++++++++++++++++
 zfs/module/zfs/zfs_vnops.c        |  2 +-
 zfs/zfs_config.h.in               |  3 ++
 16 files changed, 170 insertions(+), 2 deletions(-)
 create mode 100644 zfs/config/user-libaio.m4

Comments

Colin Ian King March 28, 2018, 3:40 p.m. UTC | #1
Ugh, that should be ARTFUL and not XENIAL.

On 28/03/18 16:39, Colin King wrote:
> From: Colin Ian King <colin.king@canonical.com>
> 
> BugLink: https://bugs.launchpad.net/bugs/1754584
> 
> SRU Request [Xenial]
> 
> == Justification ==
> 
> It is possible to hang zfs asynchronous reads if a read to a page that
> is mmap'd onto the the file being read is the same offset in the
> mapping as in the file. This is caused by two lock operations on the page.
> 
> == Fix ==
> 
> Upstream ZFS hot-fix to ensure the page is not double-locked during async
> I/O of one or more pages.
> 
> == Testing ==
> 
> Create a zfs pool + zfs file system, run the reproducer program in comment
> #28 on the zfs filesystem. Without the fix this can lock up, with the fix
> this runs to completion.
> 
> == Regression Potential ==
> 
> Minimal, the locking fix addresses a fundamental bug in the locking and
> this should not affect ZFS read/write I/O with this fix.
> 
> Colin Ian King (2):
>   UBUNTU: SAUCE: (noup) Update zfs to 0.6.5.11-1ubuntu3.2
>   UBUNTU: SAUCE: Fix non-prefaulted page deadlock (LP: #1754584)
> 
>  zfs/META                          |  2 +-
>  zfs/Makefile.in                   |  2 ++
>  zfs/aclocal.m4                    |  1 +
>  zfs/config/user-libaio.m4         | 14 ++++++++
>  zfs/config/user.m4                |  1 +
>  zfs/config/zfs-build.m4           |  2 ++
>  zfs/configure                     | 71 +++++++++++++++++++++++++++++++++++++++
>  zfs/include/Makefile.in           |  2 ++
>  zfs/include/linux/Makefile.in     |  2 ++
>  zfs/include/sys/Makefile.in       |  2 ++
>  zfs/include/sys/fm/Makefile.in    |  2 ++
>  zfs/include/sys/fm/fs/Makefile.in |  2 ++
>  zfs/include/sys/fs/Makefile.in    |  2 ++
>  zfs/include/sys/zfs_ioctl.h       | 62 ++++++++++++++++++++++++++++++++++
>  zfs/module/zfs/zfs_vnops.c        |  2 +-
>  zfs/zfs_config.h.in               |  3 ++
>  16 files changed, 170 insertions(+), 2 deletions(-)
>  create mode 100644 zfs/config/user-libaio.m4
>
Colin Ian King March 28, 2018, 3:41 p.m. UTC | #2
I'll resend, got the series totally wrong.

On 28/03/18 16:39, Colin King wrote:
> From: Colin Ian King <colin.king@canonical.com>
> 
> BugLink: https://bugs.launchpad.net/bugs/1754584
> 
> SRU Request [Xenial]
> 
> == Justification ==
> 
> It is possible to hang zfs asynchronous reads if a read to a page that
> is mmap'd onto the the file being read is the same offset in the
> mapping as in the file. This is caused by two lock operations on the page.
> 
> == Fix ==
> 
> Upstream ZFS hot-fix to ensure the page is not double-locked during async
> I/O of one or more pages.
> 
> == Testing ==
> 
> Create a zfs pool + zfs file system, run the reproducer program in comment
> #28 on the zfs filesystem. Without the fix this can lock up, with the fix
> this runs to completion.
> 
> == Regression Potential ==
> 
> Minimal, the locking fix addresses a fundamental bug in the locking and
> this should not affect ZFS read/write I/O with this fix.
> 
> Colin Ian King (2):
>   UBUNTU: SAUCE: (noup) Update zfs to 0.6.5.11-1ubuntu3.2
>   UBUNTU: SAUCE: Fix non-prefaulted page deadlock (LP: #1754584)
> 
>  zfs/META                          |  2 +-
>  zfs/Makefile.in                   |  2 ++
>  zfs/aclocal.m4                    |  1 +
>  zfs/config/user-libaio.m4         | 14 ++++++++
>  zfs/config/user.m4                |  1 +
>  zfs/config/zfs-build.m4           |  2 ++
>  zfs/configure                     | 71 +++++++++++++++++++++++++++++++++++++++
>  zfs/include/Makefile.in           |  2 ++
>  zfs/include/linux/Makefile.in     |  2 ++
>  zfs/include/sys/Makefile.in       |  2 ++
>  zfs/include/sys/fm/Makefile.in    |  2 ++
>  zfs/include/sys/fm/fs/Makefile.in |  2 ++
>  zfs/include/sys/fs/Makefile.in    |  2 ++
>  zfs/include/sys/zfs_ioctl.h       | 62 ++++++++++++++++++++++++++++++++++
>  zfs/module/zfs/zfs_vnops.c        |  2 +-
>  zfs/zfs_config.h.in               |  3 ++
>  16 files changed, 170 insertions(+), 2 deletions(-)
>  create mode 100644 zfs/config/user-libaio.m4
>