[CRIU] [PATCH 08/16] files-ids: generate id-s accoding with mnt_id, st->st_dev and st->st_ino
Andrew Vagin
avagin at parallels.com
Wed Apr 9 22:12:34 PDT 2014
On Wed, Apr 09, 2014 at 07:00:32PM +0400, Pavel Emelyanov wrote:
> On 04/09/2014 03:35 AM, Andrey Vagin wrote:
> > One device can be mounted a few times, so files are identical only,
> > if they have the same mnt_id.
>
> I see no changes in fdid generation, only it the caching.
>
...
> > -static struct fd_id *fd_id_cache_lookup(struct stat *st)
> > +static struct fd_id *fd_id_cache_lookup(struct fd_parms *p)
> > {
> > + struct stat *st = &p->stat;
> > struct fd_id *fi;
> >
> > for (fi = fd_id_cache[fdid_hashfn(st->st_dev, st->st_ino)];
> > fi; fi = fi->n)
> > - if (fi->dev == st->st_dev && fi->ino == st->st_ino)
> > + if (fi->dev == st->st_dev &&
> > + fi->ino == st->st_ino &&
> > + fi->mnt_id == p->mnt_id)
^^^ check mnt_id
> > return fi;
> >
> > return NULL;
> > }
> >
> > -int fd_id_generate_special(struct stat *st, u32 *id)
> > +int fd_id_generate_special(struct fd_parms *p, u32 *id)
> > {
> > - if (st) {
> > + if (p) {
> > struct fd_id *fi;
> >
> > - fi = fd_id_cache_lookup(st);
> > + fi = fd_id_cache_lookup(p);
If we don't have file with this mnt_id, we will generate a new id for
the file.
> > if (fi) {
> > *id = fi->id;
> > return 0;
More information about the CRIU
mailing list