Evgeniy Polyakov wrote:
> On Fri, Jun 19, 2009 at 04:59:26PM +0200, Daniel Maher 
> ([email protected]) wrote:
>> So the process would be :
>>
>> - Initiate fserver on serverA and serverB
>> - cfg add serverA on client (idx=1)
>> - mount on client
>> - wait > 5 seconds
> 
> This is not needed, mount is a 'synchronization' point.
> 
>> - cfg add serverB on client (idx=1)
>> - wait > 5 seconds
>> - write to mount and watch it appear on both serverA and serverB
> 
> Yes. You can watch either dmesg or fserver log for connection, after it
> is completed both servers will start receiving data.

Thank you for the clarification !  Unfortunately, i cannot seem to get 
this to actually work.  I realise that it's pretty straightforward, so 
i'm really not sure what i'm missing here.

My process is (IP's replaced by hostnames for clarity) :

1. Initiate fserver on serverA and serverB :
# fserver -X 1 -r /opt/pohtest/

2. Use cfg to create a config for serverA on client :
# cfg -A add -a serverA -p 1025 -i 1

3a. Mount as normal
# mount -t pohmel -o idx=1 none /opt/pohtest

3b. This results in the following fserver output on serverA :
Accepted client client:56525.
fserver_root_capabilities: avail: 148041433088, used: 10259111936, 
export: 0, inodes: 39911424, flags: 0.

4a. Use cfg to add serverB to the same index :
# cfg -A add -a serverB -p 1025 -i 1

4b. This results in the following fserver output on serverB :
Accepted client client:34239.

4c. Wait > 5 seconds.

5a. Enter the mountpoint on the client and touch a file :
# touch TESTFILE
# ls -l
-rw-r--r-- 1 root root 0 2009-06-22 17:04 TESTFILE

5b. This has the following output on serverB :
fserver_lock: lock grab: path: '/', id: 1, start: 0, ino: 2, size: 
4294967295, type: 1.
coherency_broadcast_hash: client: 0x80568c0, hash: f06a68bd, len: 2, 
ext: 1, cmd: 11 ->
fserver_lock: lock granted: name: '/', id: 1, start: 0, ino: 2, size: 
4294967295, type: 8001.
coherency_broadcast_hash: client: (nil), hash: f06a68bd, len: 2, ext: 0, 
cmd: 15 ->
               192.168.0.147:34239: id: 1, intent: 1, err: 0

5c. This has NO output on serverA whatsoever.

6a. Check the contents of the export directory on serverB :
# ls -l /opt/pohtest/
-rw-r--r-- 1 root root 0 2009-06-22 13:15 TESTFILE

6b. Check the contents of the export directory on serverA :
# ls -l /opt/pohtest/
#

Clearly the operation has not taken place on serverA.  Any additional 
operations executed on the client will appear on serverB, but not 
serverA.  The fserver output on serverA remains completely empty.  The 
configuration on the client appears to be good, though :

# cfg -A show -i 1
Config Index = 1
Family    Server IP                                            Port
AF_INET   serverA                                              1025
AF_INET   serverB                                              1025

As a further test, i removed serverB from the configuration via cfg -A 
del, waited > 5 seconds (just to be safe), added it again, again waited 
 > 5 seconds, and touched another file.  This file appeared in the mount 
on client, and this time, it appeared in the export point of serverA - 
but NOT serverB.

I thought, perhaps, that operations were only being executed on the last 
server added to a given index, but as the test above showed, this is not 
the case.  Unfortunately i do not have additional machines to dedicate 
to the pohmelfs testing pool, so i cannot test with more than these three.

Any ideas what's going on here ?  This really seems like it should work, 
but clearly, it is not.  I would be more than happy to provide any 
information that might make solving this issue easier, such as library 
information, compiler settings, traces, whatever - just name it. :)  I'm 
genuinely interested in pohmelfs, and am eager to help in this regard.


Thank you, and have a great day !


--
dan.
_______________________________________________
Pohmelfs mailing list
[email protected]
http://www.ioremap.net/cgi-bin/mailman/listinfo/pohmelfs

Reply via email to