[SRU][J/K/J:hwe-5.17[PATCH 0/2] refactoring of overlayfs fix to properly support shiftfs

Andrea Righi andrea.righi at canonical.com
Fri Aug 5 06:32:09 UTC 2022


[Impact]

Starting with 5.13 we've incorrectly dropped the following sauce patch:

  UBUNTU: SAUCE: overlayfs: fix incorrect mnt_id of files opened from map_files

This patch is required to use overlayfs on top of shiftfs and without
this patch we may break containers that rely on shiftfs (using zfs/ceph
as storage pool w/ shiftfs enabled).

However, we made this patch dependent on AUFS, starting with Jammy we're
not enabling AUFS anymore, so this fix becomes a no-op.

So we need to re-introduce this fix with a bit of refactoring to not
depend on AUFS.

[Test case]

The following script can be used to trigger the issue:

  #!/bin/bash

  cat > test.py << EOF
  import sys

  f = open("/proc/self/maps")

  for l in f.readlines():
    if "python" not in l:
      continue
    print(l)
    s = l.split()
    start, end = s[0].split("-")
    fname = s[-1]
    print(start, end, fname)
    break
  else:
    sys.exit(1)

  test_file1 = open(fname)
  test_file2 = open("/proc/self/map_files/%s-%s" % (start, end))

  fdinfo1 = open("/proc/self/fdinfo/%d" % test_file1.fileno()).read()
  fdinfo2 = open("/proc/self/fdinfo/%d" % test_file2.fileno()).read()

  if fdinfo1 != fdinfo2:
    print("FAIL")
    print(test_file1)
    print(fdinfo1)
    print(test_file2)
    print(fdinfo2)
    sys.exit(1)
  print("PASS")
  EOF
  sudo docker run -it --privileged --rm -v `pwd`:/mnt python python /mnt/test.py

[Fix]

Import the right pieces from AUFS to properly support the fix and get
rid of the AUFS dependency across all our kernels and re-apply the
overlayfs fix without the AUFS dependency.

[Regression potential]

This patch is touching overlayfs, so we may see potential regressions in
overlayfs, especially when containers are used.

[Additional notes]

We need different patches for Jammy and Kinetic, because Kinetic is
missing AUFS completely, so we need to import the chunk of code from
AUFS that we were relying to, in order to properly apply the overlayfs
fix.

Moreover, J/hwe-5.17 also needs a fix, because this kernel is now
"detached" (it doesn't have a parent anymore), so it's following its own
development workflow, like a master kernel.





More information about the kernel-team mailing list