summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaghavendra G <raghavendra@gluster.com>2009-09-15 08:06:56 +0000
committerAnand V. Avati <avati@dev.gluster.com>2009-09-15 07:19:38 -0700
commite16fc897aeece7598da195bb9bd050e352ff31ec (patch)
treeff7d20d9ea384ba4afa1698d3d3b552da929a1fa
parent3508a2d237cee98eb5c890011b569a1820b57f5c (diff)
booster: use __REDIRECT macro to prevent creat being renamed to creat64.
- nm on libglusterfs-booster.so shows only creat64 defined but not creat. This behavior is observed due to following reasons. 1. Booster is compiled with _FILE_OFFSET_BITS=64. 2. fcntl.h when included with _FILE_OFFSET_BITS=64 defined, renames all occurences of creat to creat64 in the source code from the point of #include <fcntl.h>. fcntl.h should be included since booster.c uses many of the macros defined in that header and glusterfs (booster in turn) has to be compiled with _FILE_OFFSET_BITS=64 since glusterfs uses datatypes (off_t, stat etc) whose sizes vary depending on whether this macro is defined or not. Basically, this macro should be defined to provide portability across 32 and 64 bit architectures. The correct fix is to make glusterfs to use datatypes big enough to hold 64 bit variants as well as 32 bit variants (like int64_t replacing off_t) and not to define _FILE_OFFSET_BITS=64 at all. As a temporary work around, 1. we can implement creat functionality in a function with different name, say booster_false_creat 2. rename this function to creat using __REDIRECT macro. since this renaming happens after renaming of creat to creat64 (from the first __REDIRECT macro in fcntl.h), we will end up with creat symbol being defined in libglusterfs-booster.so Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 264 (creat is not resolved properly to the symbol defined in booster) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=264
-rw-r--r--booster/src/booster.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/booster/src/booster.c b/booster/src/booster.c
index f3834e11938..f53772410ce 100644
--- a/booster/src/booster.c
+++ b/booster/src/booster.c
@@ -595,8 +595,11 @@ out:
return -1;
}
+int __REDIRECT (booster_false_creat, (const char *pathname, mode_t mode),
+ creat) __nonnull ((1));
+
int
-creat (const char *pathname, mode_t mode)
+booster_false_creat (const char *pathname, mode_t mode)
{
int ret = -1;
if (!pathname) {