[Mesa-dev] [PATCH] tests/cache_test: allow crossing mount points

Juan A. Suarez Romero jasuarez at igalia.com
Tue Mar 28 15:32:41 UTC 2017


On Tue, 2017-03-28 at 16:53 +0200, Nicolai Hähnle wrote:
> On 25.03.2017 01:40, Juan A. Suarez Romero wrote:
> > When using an overlayfs system (like a Docker container), rmrf_local()
> > fails because part of the files to be removed are in different mount
> > points (layouts). And thus cache-test fails.
> 
> Can you explain a bit more how this can happen? I thought the test does
> 
> mkdir(CACHE_TEST_TMP, 0755);
> 
> ...
> 
> rmrf_local(CACHE_TEST_TMP);
> 
> How does this end up crossing mounts?
> 

Between both calls, we create the disk cache, which creates
subdirectories and files inside.


The crossing happens because I'm running it inside a docker container,
which uses internally an overlayfs. This means that some of those
subdirectories can be in one mountpoint and others in other mountpoint.
 This seems to be how nftw() call handles this overlayfs.


	J.A.


> 
> 
> > 
> > Letting crossing mount points is not a big problem, specially because
> > this is just for a test, not to be used in real code.
> > ---
> >  src/compiler/glsl/tests/cache_test.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/src/compiler/glsl/tests/cache_test.c b/src/compiler/glsl/tests/cache_test.c
> > index 2302f44..ac60197 100644
> > --- a/src/compiler/glsl/tests/cache_test.c
> > +++ b/src/compiler/glsl/tests/cache_test.c
> > @@ -124,7 +124,7 @@ rmrf_local(const char *path)
> >     if (path == NULL || *path == '\0' || *path != '.')
> >        return -1;
> > 
> > -   return nftw(path, remove_entry, 64, FTW_DEPTH | FTW_PHYS | FTW_MOUNT);
> > +   return nftw(path, remove_entry, 64, FTW_DEPTH | FTW_PHYS);
> >  }
> > 
> >  static void
> > 
> 
> 


More information about the mesa-dev mailing list