If you do need to use the PVFS library interface from c++, then you will
need to replace this:
#include "pvfs2.h"
with this:
extern "C" {
#include "pvfs2.h"
}
The pvfs header files aren't compatible with c++ out of the box, but
that extern wrapper will make it work. As Kyle said, though, in general
MPI-IO or normal POSIX calls are a better choice unless you need
specific functionality from the native PVFS interface.
-Phil
Kyle Schochenmaier wrote:
Nothing will happen with the pvfs2 client, its a dameon. Instead
of using internal pvfs calls you should instead use regular posix io
calls as you would on any other filesystem open/close/etc. It is not
recommended to use pvfs-open in normal use cases.
Good luck!
On May 30, 2009 12:05 PM, "Ariel Briceño" <[email protected]
<mailto:[email protected]>> wrote:
Hi, I have some problems trying to use pvfs2_open
I have a small cluster with two computers with pvfs2.
Although i need to start the server with
/src/local/sbin/pvfs2-server /etc/pvfs2-fs.conf
in each machine (both machines are IO servers),
when i try to use pvfs2_open in my code like this:
####################################
#include <cstdio>
#include <iostream>
#include <cstdlib>
#include "pvfs2.h"
#include <sys/types.h>
#include <unistd.h>
#include <grp.h>
#include <pwd.h>
// compile with g++ Read.cpp -L /usr/local/lib/libpvfs2
int main( int argc, char **argv)
{
//struct pvfs_filestat pstat;
int fd;
char file[256] = "/mnt/pvfs2/File.map";
if ( fd = pvfs2_open(file) != 0 )
{
perror("open");
return EXIT_FAILURE;
}
if ( pvfs2_close(fd) < 0 )
{
perror("close");
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
###################################
the result is
Read.cpp:18: error: ‘pvfs2_open’ was not declared in this scope
Read.cpp:24: error: ‘pvfs2_close’ was not declared in this scope
I mean, i only can do the pvfs2-commands such as pvfs2-cp at the promp and
i want to read and write files from my code like this.
What is missing?
What i'm doing wrong?
Do i need to use mpi?
Another issue is, although i copied
/usr/src/pvfs-2.8.1/examples/pvfs2-server.rc
to /etc/rc.d/init.d/pvfs2-server i can't do
/etc/rc.d/init.d/pvfs2-server start or
/etc/rc.d/init.d/pvfs2-server stop. Why is this?
Another thing is: Mount the existing PVFS2 volume on the local filesystem.
Because i have the /mnt/pvfs2 folder I'm only loading the kernel
module in both machines
like
insmod /usr/src/pvfs-2.8.1/src/kernel/linux-2.6/pvfs2.ko
and in the dmesg output i got
... [17565.529630] pvfs2: module version 2.8.1 loaded
In the machine that i want to mount the pvfs2 volume i did
cd /usr/src/pvfs-2.8.1/src/apps/kernel/linux/
./pvfs2-client -f -p ./pvfs2-client-core
and the result was
pvfs2-client starting
Spawning new child process
Waiting on child with pid 5544
About to exec: ./pvfs2-client-core, with args: pvfs2-client-core
--child -a 5 -n 5 --logtype file -L /tmp/pvfs2-client.log
but nothing more happened. Whatn is wrong?
_______________________________________________
Pvfs2-users mailing list
[email protected]
<mailto:[email protected]>
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-users
------------------------------------------------------------------------
_______________________________________________
Pvfs2-users mailing list
[email protected]
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-users
_______________________________________________
Pvfs2-users mailing list
[email protected]
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-users