changed OS to Solaris as it was seen only on solaris..
fdatasync seems to be not present in the earlier solaris releases, but we have fdatasync in solaris since 5 Feb 2008, i guess the Solaris 10u6 is quite old. As we didn't face the same issue at partners, can we have access to those machines where the problem is seen?. Till then let me figure out how to fix this, if "fdatasync" is not present.
ok amar solution is that to build a package at partners machine or a machine with 10u6 or 10u7 from Solaris release rather than OpenSolaris. Problem summary: OpenSolaris 200809 man page says fdatasync works with "#include <unistd.h>" with no compiler flags and stuff. This is becoz it is a new version "5.11" Whereas Solaris 10u6 or 10u7 says fdatasync works with "#include <unistd.h>" with "-lrt" compiler flag. This is old version "5.10" Now there is no sane way of fixing this as "fdatasync" would not have come into picture at configure level at partners becoz we don't pass -lrt at configure check time and it would have failed to get "fdatasync" ultimately not including it with "posix.so" -> no problems here. But with building a package with OpenSolaris 200809 gives a problem including "fdatasync" into posix.so which would not work at customer site.
I deployed a 'binary' image of GlusterFS built on Open Solaris 200809 machine on Sun Solaris 10u6 machine, and while running GlusterFS got the below error: posix.so: undefined symbol 'fdatasync', dlopen failed. Need to make our solaris packaging robust for these flags, or should understand which package caused this behavior. -Amar
This problem persists on Solaris. No way we can provide a port package, as Solaris changed LDFLAGS itself from version to version.. Solution is to build glusterfs on the machine itself as harsha suggested.