From 86487dfb7f51f552bb27a16568a612f14221cd49 Mon Sep 17 00:00:00 2001 From: Niels de Vos Date: Wed, 20 May 2015 22:34:44 +0200 Subject: fuse: squash 64-bit inodes in readdirp when enable-ino32 is set The structures returned by readdirp contain the inode 2x. Only one of them was squashed into 32-bits when enable-ino32 is enabled. Backport of: > Change-Id: I33a6d28fb118bb23971f918ffeb983d7f033106e > BUG: 1223889 > Reviewed-on: http://review.gluster.org/10881 > Signed-off-by: Niels de Vos > Tested-by: Cyril Peponnet [on release-3.5] Change-Id: I33a6d28fb118bb23971f918ffeb983d7f033106e BUG: 1222150 Signed-off-by: Niels de Vos Tested-by: Cyril Peponnet Reviewed-on: http://review.gluster.org/10884 Tested-by: Gluster Build System --- xlators/mount/fuse/src/fuse-bridge.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'xlators/mount/fuse/src/fuse-bridge.c') diff --git a/xlators/mount/fuse/src/fuse-bridge.c b/xlators/mount/fuse/src/fuse-bridge.c index 0bbdf86b695..3b2df131fa3 100644 --- a/xlators/mount/fuse/src/fuse-bridge.c +++ b/xlators/mount/fuse/src/fuse-bridge.c @@ -2713,7 +2713,12 @@ fuse_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this, fde = (struct fuse_direntplus *)(buf + size); feo = &fde->entry_out; - fde->dirent.ino = entry->d_ino; + + if (priv->enable_ino32) + fde->dirent.ino = GF_FUSE_SQUASH_INO(entry->d_ino); + else + fde->dirent.ino = entry->d_ino; + fde->dirent.off = entry->d_off; fde->dirent.type = entry->d_type; fde->dirent.namelen = strlen (entry->d_name); -- cgit