From patchwork Wed Jul 4 15:51:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [v5,17/19] files: make_gen_id -- Promote to be general helper From: Cyrill Gorcunov X-Patchwork-Id: 8825 Message-Id: <20180704155147.29114-18-gorcunov@gmail.com> To: crml Cc: Andrey Vagin Date: Wed, 4 Jul 2018 18:51:45 +0300 It is used in files tree generation so we will need reuse for epoll sake. Also use the whole 64 bit offset to shuffle bits more. Signed-off-by: Cyrill Gorcunov --- criu/files.c | 11 ++++++++--- criu/include/files.h | 1 + 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/criu/files.c b/criu/files.c index 4c5808af4282..b8406b49f52f 100644 --- a/criu/files.c +++ b/criu/files.c @@ -315,9 +315,12 @@ static int fixup_overlayfs(struct fd_parms *p, struct fd_link *link) * The kcmp-ids.c engine does this trick, see comments in it for more info. */ -static u32 make_gen_id(const struct fd_parms *p) +uint32_t make_gen_id(uint32_t st_dev, uint32_t st_ino, uint64_t pos) { - return ((u32)p->stat.st_dev) ^ ((u32)p->stat.st_ino) ^ ((u32)p->pos); + uint32_t pos_hi = pos >> 32; + uint32_t pos_low = pos & 0xffffffff; + + return st_dev ^ st_ino ^ pos_hi ^ pos_low; } int do_dump_gen_file(struct fd_parms *p, int lfd, @@ -326,7 +329,9 @@ int do_dump_gen_file(struct fd_parms *p, int lfd, int ret = -1; e->type = ops->type; - e->id = make_gen_id(p); + e->id = make_gen_id((uint32_t)p->stat.st_dev, + (uint32_t)p->stat.st_ino, + (uint64_t)p->pos); e->fd = p->fd; e->flags = p->fd_flags; diff --git a/criu/include/files.h b/criu/include/files.h index 052222b4fc56..c490d2a98803 100644 --- a/criu/include/files.h +++ b/criu/include/files.h @@ -64,6 +64,7 @@ struct fd_parms { } extern int fill_fdlink(int lfd, const struct fd_parms *p, struct fd_link *link); +extern uint32_t make_gen_id(uint32_t st_dev, uint32_t st_ino, uint64_t pos); struct file_desc;