APPLIED[F/E]/cmnt: [SRU][UNSTABLE/BIONIC/XENIAL][PATCH] UBUNTU: SAUCE: overlayfs: use shiftfs hacks only with shiftfs as underlay

Submitted by Kleber Souza on April 27, 2020, 1:10 p.m.

Details

Message ID c47ea56e-0084-3595-a7b4-fdbe7017c0ef@canonical.com
State New
Series "UBUNTU: SAUCE: overlayfs: use shiftfs hacks only with shiftfs as underlay"
Headers show

Commit Message

Kleber Souza April 27, 2020, 1:10 p.m.
On 27.04.20 01:02, Khaled Elmously wrote:
> Looks like this patch breaks the Eoan build:
> 
> /tmp/kernel-kmously-e9d4a02-jZGj/build/fs/overlayfs/file.c: In function 'ovl_open_realfile':
> /tmp/kernel-kmously-e9d4a02-jZGj/build/fs/overlayfs/file.c:34:40: error: 'SHIFTFS_MAGIC' undeclared (first use in this function)
>    34 |  if (realpath.dentry->d_sb->s_magic == SHIFTFS_MAGIC)
>       |                                        ^~~~~~~~~~~~~
> /tmp/kernel-kmously-e9d4a02-jZGj/build/fs/overlayfs/file.c:34:40: note: each undeclared identifier is reported only once for each function it appears in

Christian,

This seems to fix it:



Would you agree in me amending your patch to fix it?


Kleber


> 
> 
> 
> 
> I haven't tried building focal 
> 
> 
> 
> 
> On 2020-04-24 15:28:40 , Kleber Souza wrote:
>> On 23.04.20 12:11, Christian Brauner wrote:
>>> From: Andrei Vagin <avagin@gmail.com>
>>>
>>> BugLink: https://bugs.launchpad.net/bugs/1857257
>>>
>>> The hack was introduced in ("UBUNTU: SAUCE: overlayfs: allow with
>>> shiftfs as underlay") and it broke checkpoint/restore of docker
>>> contains:
>>> https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1857257
>>>
>>> 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
>>>
>>> Cc: Stefan Bader <stefan.bader@canonical.com>
>>> Cc: Connor Kuehl <connor.kuehl@canonical.com>
>>> Cc: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
>>> Fixes: 58009298c6bd ("UBUNTU: SAUCE: overlayfs: allow with shiftfs as underlay")
>>> Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
>>> Signed-off-by: Andrei Vagin <avagin@gmail.com>
>>> ---
>>>  fs/overlayfs/file.c | 9 ++++++---
>>>  1 file changed, 6 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/fs/overlayfs/file.c b/fs/overlayfs/file.c
>>> index 4f94ef663569..9d16fff5342a 100644
>>> --- a/fs/overlayfs/file.c
>>> +++ b/fs/overlayfs/file.c
>>> @@ -42,9 +42,12 @@ static struct file *ovl_open_realfile(const struct file *file,
>>>  	int flags = file->f_flags | O_NOATIME | FMODE_NONOTIFY;
>>>  
>>>  	old_cred = ovl_override_creds(inode->i_sb);
>>> -	ovl_path_real(file->f_path.dentry, &realpath);
>>> -	realfile = open_with_fake_path(&realpath, flags, realinode,
>>> -				       current_cred());
>>> +	if (realpath.dentry->d_sb->s_magic == SHIFTFS_MAGIC)
>>> +		realfile = open_with_fake_path(&realpath, flags, realinode,
>>> +					       current_cred());
>>> +	else
>>> +		realfile = open_with_fake_path(&file->f_path, flags, realinode,
>>> +					       current_cred());
>>>  	revert_creds(old_cred);
>>>  
>>>  	pr_debug("open(%p[%pD2/%c], 0%o) -> (%p, 0%o)\n",
>>>
>>> base-commit: 48f168950cd193d9beedc0afb0c79a254e32f637
>>>
>>
>> According to the replies on the other shiftfs threads, I have applied this patch
>> as well to all the stable series supporting shiftfs: eoan/linux and focal/linux.
>>
>> Thanks,
>> Kleber
>>
>> -- 
>> kernel-team mailing list
>> kernel-team@lists.ubuntu.com
>> https://lists.ubuntu.com/mailman/listinfo/kernel-team

Patch hide | download patch | download mbox

diff --git a/fs/overlayfs/file.c b/fs/overlayfs/file.c
index 30f35c53ce04..a2faa086ee4b 100644
--- a/fs/overlayfs/file.c
+++ b/fs/overlayfs/file.c
@@ -3,6 +3,7 @@ 
  * Copyright (C) 2017 Red Hat, Inc.
  */
 
+#include <uapi/linux/magic.h>
 #include <linux/cred.h>
 #include <linux/file.h>
 #include <linux/mount.h>

Comments

Christian Brauner April 27, 2020, 1:16 p.m.
On Mon, Apr 27, 2020 at 03:10:18PM +0200, Kleber Souza wrote:
> On 27.04.20 01:02, Khaled Elmously wrote:
> > Looks like this patch breaks the Eoan build:
> > 
> > /tmp/kernel-kmously-e9d4a02-jZGj/build/fs/overlayfs/file.c: In function 'ovl_open_realfile':
> > /tmp/kernel-kmously-e9d4a02-jZGj/build/fs/overlayfs/file.c:34:40: error: 'SHIFTFS_MAGIC' undeclared (first use in this function)
> >    34 |  if (realpath.dentry->d_sb->s_magic == SHIFTFS_MAGIC)
> >       |                                        ^~~~~~~~~~~~~
> > /tmp/kernel-kmously-e9d4a02-jZGj/build/fs/overlayfs/file.c:34:40: note: each undeclared identifier is reported only once for each function it appears in
> 
> Christian,
> 
> This seems to fix it:
> 
> diff --git a/fs/overlayfs/file.c b/fs/overlayfs/file.c
> index 30f35c53ce04..a2faa086ee4b 100644
> --- a/fs/overlayfs/file.c
> +++ b/fs/overlayfs/file.c
> @@ -3,6 +3,7 @@
>   * Copyright (C) 2017 Red Hat, Inc.
>   */
>  
> +#include <uapi/linux/magic.h>
>  #include <linux/cred.h>
>  #include <linux/file.h>
>  #include <linux/mount.h>
> 
> 
> Would you agree in me amending your patch to fix it?

Yes, please that would be great! Thanks for fixing this and sorry for
the noise!

Christian
Kleber Souza April 27, 2020, 2:37 p.m.
On 27.04.20 15:16, Christian Brauner wrote:
> On Mon, Apr 27, 2020 at 03:10:18PM +0200, Kleber Souza wrote:
>> On 27.04.20 01:02, Khaled Elmously wrote:
>>> Looks like this patch breaks the Eoan build:
>>>
>>> /tmp/kernel-kmously-e9d4a02-jZGj/build/fs/overlayfs/file.c: In function 'ovl_open_realfile':
>>> /tmp/kernel-kmously-e9d4a02-jZGj/build/fs/overlayfs/file.c:34:40: error: 'SHIFTFS_MAGIC' undeclared (first use in this function)
>>>    34 |  if (realpath.dentry->d_sb->s_magic == SHIFTFS_MAGIC)
>>>       |                                        ^~~~~~~~~~~~~
>>> /tmp/kernel-kmously-e9d4a02-jZGj/build/fs/overlayfs/file.c:34:40: note: each undeclared identifier is reported only once for each function it appears in
>>
>> Christian,
>>
>> This seems to fix it:
>>
>> diff --git a/fs/overlayfs/file.c b/fs/overlayfs/file.c
>> index 30f35c53ce04..a2faa086ee4b 100644
>> --- a/fs/overlayfs/file.c
>> +++ b/fs/overlayfs/file.c
>> @@ -3,6 +3,7 @@
>>   * Copyright (C) 2017 Red Hat, Inc.
>>   */
>>  
>> +#include <uapi/linux/magic.h>
>>  #include <linux/cred.h>
>>  #include <linux/file.h>
>>  #include <linux/mount.h>
>>
>>
>> Would you agree in me amending your patch to fix it?
> 
> Yes, please that would be great! Thanks for fixing this and sorry for
> the noise!
> 
> Christian
> 

Patch amended on both Focal and Eoan.


Thanks,
Kleber