summaryrefslogtreecommitdiffstats
path: root/xlators
diff options
context:
space:
mode:
authorEmmanuel Dreyfus <manu@netbsd.org>2014-09-16 17:13:51 +0200
committerVijay Bellur <vbellur@redhat.com>2014-09-25 11:05:52 -0700
commit61a7256f977dea586ad62741592f867906a63097 (patch)
treeeccfb9df3d06867030f080547097186326e9177b /xlators
parentde39dd2c9ec0b6645c3d859d38780605e8f3a5c2 (diff)
32 bit fix: use off_t and not size_t for truncate()
Make sure off_t and not size_t is used when holding file offsets for ftruncate()/truncate(). It works on 64 bit machines where sizeof(size_t) == sizeof(off_t) == 8, but breaks for big offsets on 32 bit machines because sizeof(size_t) == 4 and sizeof(off_t) == 8 This is backport of Ia2637be772ba9b11731d59fdbffbd269f0ff56c8 BUG: 1138897 Change-Id: I8fe77a86831f0db4eff5b5c89efe004b9a0b29e9 Signed-off-by: Emmanuel Dreyfus <manu@netbsd.org> Reviewed-on: http://review.gluster.org/8743 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'xlators')
-rw-r--r--xlators/mount/fuse/src/fuse-bridge.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/xlators/mount/fuse/src/fuse-bridge.c b/xlators/mount/fuse/src/fuse-bridge.c
index dd51f5a6608..17335492465 100644
--- a/xlators/mount/fuse/src/fuse-bridge.c
+++ b/xlators/mount/fuse/src/fuse-bridge.c
@@ -1010,14 +1010,14 @@ out:
}
static void
-fuse_do_truncate (fuse_state_t *state, size_t size)
+fuse_do_truncate (fuse_state_t *state)
{
if (state->fd) {
FUSE_FOP (state, fuse_truncate_cbk, GF_FOP_FTRUNCATE,
- ftruncate, state->fd, size, state->xdata);
+ ftruncate, state->fd, state->off, state->xdata);
} else {
FUSE_FOP (state, fuse_truncate_cbk, GF_FOP_TRUNCATE,
- truncate, &state->loc, size, state->xdata);
+ truncate, &state->loc, state->off, state->xdata);
}
return;
@@ -1059,7 +1059,7 @@ fuse_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
calc_timeout_nsec (priv->attribute_timeout);
if (state->truncate_needed) {
- fuse_do_truncate (state, state->size);
+ fuse_do_truncate (state);
} else {
#if FUSE_KERNEL_MINOR_VERSION >= 9
priv->proto_minor >= 9 ?
@@ -1166,7 +1166,7 @@ fuse_setattr_resume (fuse_state_t *state)
state->xdata);
}
} else {
- fuse_do_truncate (state, state->size);
+ fuse_do_truncate (state);
}
}
@@ -1216,7 +1216,7 @@ fuse_setattr (xlator_t *this, fuse_in_header_t *finh, void *msg)
if ((fsi->valid & (FATTR_MASK)) != FATTR_SIZE) {
if (fsi->valid & FATTR_SIZE) {
- state->size = fsi->size;
+ state->off = fsi->size;
state->truncate_needed = _gf_true;
}
@@ -1230,7 +1230,7 @@ fuse_setattr (xlator_t *this, fuse_in_header_t *finh, void *msg)
state->attr.ia_uid = fsi->uid;
state->attr.ia_gid = fsi->gid;
} else {
- state->size = fsi->size;
+ state->off = fsi->size;
}
fuse_resolve_and_resume (state, fuse_setattr_resume);