[CRIU] [PATCH 08/11] notify: open files form a correct mount points
Andrew Vagin
avagin at parallels.com
Mon Aug 4 04:55:00 PDT 2014
On Mon, Aug 04, 2014 at 02:42:52PM +0400, Pavel Emelyanov wrote:
> On 07/25/2014 01:12 AM, Andrey Vagin wrote:
> > Signed-off-by: Andrey Vagin <avagin at openvz.org>
> > ---
> > fsnotify.c | 20 ++++++++++++++------
> > 1 file changed, 14 insertions(+), 6 deletions(-)
> >
> > diff --git a/fsnotify.c b/fsnotify.c
> > index 903e5ba..aa0e42d 100644
> > --- a/fsnotify.c
> > +++ b/fsnotify.c
> > @@ -39,6 +39,8 @@
> > #include "lock.h"
> > #include "irmap.h"
> > #include "cr_options.h"
> > +#include "namespaces.h"
> > +#include "pstree.h"
> >
> > #include "protobuf.h"
> > #include "protobuf/fsnotify.pb-c.h"
> > @@ -337,17 +339,23 @@ static char *get_mark_path(const char *who, struct file_remap *remap,
> > char *path = NULL;
> >
> > if (remap) {
> > + int mntns_root;
> > +
> > + mntns_root = mntns_get_root_by_mnt_id(remap->mnt_id);
> > +
> > pr_debug("\t\tRestore %s watch for 0x%08x:0x%016lx (via %s)\n",
> > who, s_dev, i_ino, remap->path);
> > - return remap->path;
> > - }
> > + *target = openat(mntns_root, remap->path, O_PATH);
> > + } else if (f_handle->path) {
> > + int mntns_root;
> > +
> > + mntns_root = mntns_get_root_by_mnt_id(-1);
>
> Why is that correct?
irmap cache is collected in the root namespace. I will add a comment
here.
>
> >
> > - if (f_handle->path) {
> > pr_debug("\t\tRestore with path hint %s\n", f_handle->path);
> > - return f_handle->path;
> > - }
> > + *target = openat(mntns_root, f_handle->path, O_PATH);
> > + } else
> > + *target = open_handle(s_dev, i_ino, f_handle);
> >
> > - *target = open_handle(s_dev, i_ino, f_handle);
> > if (*target < 0)
> > goto err;
> >
> >
>
More information about the CRIU
mailing list