Messages in this thread | | | Subject | Re: [PATCH] ovl: create UUIDs for file systems that do not set the superblock UUID | From | Colin Ian King <> | Date | Thu, 7 Nov 2019 09:43:59 +0000 |
| |
On 07/11/2019 09:12, Colin Ian King wrote: > On 07/11/2019 08:45, Colin Ian King wrote: >> On 07/11/2019 07:08, Amir Goldstein wrote: >>> On Thu, Nov 7, 2019 at 1:43 AM Colin King <colin.king@canonical.com> wrote: >>>> >>>> From: Colin Ian King <colin.king@canonical.com> >>>> >>>> Some file systems such as squashfs do not set the UUID in the >>>> superblock resulting in a zero'd UUID. In cases were two or more >>>> of these file systems are overlayed on the lower layer we can hit >>>> overlay corruption issues because identical zero'd overlayfs UUIDs >>>> are impossible to differentiate between. This can be fixed by >>>> creating an overlayfs UUID based on the file system from the >>>> superblock s_magic and s_dev fields. (This currently seems like >>>> enough information to be able create a UUID, but the could be >>>> scope to use other super block fields such as the pointer s_fs_info >>>> but may need some obfuscation). >>>> >>> >>> The fix is incorrent. uuid stored in xattr needs to have persistent properties. >>> In the use case that you describe, the origin file handle should simply be >>> ignored. >>> >>> Please test attached patch. >> >> Thanks for the patch. Tested, and the error still occurs: >> >> [ 163.959633] overlayfs: invalid origin (etc/.pwd.lock, ftype=8000, >> origin ftype=4000). > > Added debug, seems like nouuid is not being set to true, nouuid is false > on the layers 0 and 1.
So nouuid is not being set in ovl_lower_uuid_ok() because the code is returning early because of the following statement:
if (!ofs->config.nfs_export && !(ofs->config.index && ofs->upper_mnt)) return true;
..and not getting to the following for-loop.
> >> >> Colin >> >>> >>> Thanks, >>> Amir. >>> >> >
| |