Sadly none of my test boxes will run 2.6 any more, but I have a theory
about what the problem might be here.
For some background, the pvfs2-server daemon does these steps in order
(among others): initializes BMI (networking), initializes Trove
(storage), and then finally starts processing requests.
In your case, two extra things are going on:
- the trove initialization may take a while, because it has to do a
conversion of the
format for all objects from v. 2.6 to 2.8, especially if it is also
switching to o_direct format at the same time.
- whichever server gets done first is going to immediately contact the
other servers in order to precreate handles for new files (a new feature
in 2.8)
I'm guessing that one server finished the trove conversion before the
others and started its pre-create requests. The other servers can't
answer yet (because they are still busy with trove), but since BMI is
already running the incoming precreate requests just get queued up on
the socket. When the slow server finally does try to service them, the
requests are way out of date and have since been retried by the fast server.
I'm not sure exactly what goes wrong from there, but if that's the
cause, the solution might be relatively simple. If you look in
pvfs2-server.c, you can take the block of code from
"BMI_initialize(...)" to "*server_status_flag |= SERVER_BMI_INIT;" and
try moving that whole block to _after_ the "*server_status_flag |=
SERVER_TROVE_INIT;" line that indicates that trove is done.
-Phil
On 03/30/2010 06:23 PM, Bart Taylor wrote:
I am having some problems upgrading existing file systems to 2.8.
After I finish the upgrade and start the file system, I cannot create
files. Simple commands like dd and cp stall until they timeout and
leave partial dirents like this:
[bat...@client t]$ dd if=/dev/zero of=/mnt/pvfs28/10MB.dat.6 bs=1M
count=10
dd: writing `/mnt/pvfs28/10MB.dat.6': Connection timed out
1+0 records in
0+0 records out
0 bytes (0 B) copied, 180.839 seconds, 0.0 kB/s
[r...@client ~]# ls -alh /mnt/pvfs28/
total 31M
drwxrwxrwt 1 root root 4.0K Mar 30 11:24 .
drwxr-xr-x 4 root root 4.0K Mar 23 13:38 ..
-rw-rw-r-- 1 batayl batayl 10M Mar 30 08:44 10MB.dat.1
-rw-rw-r-- 1 batayl batayl 10M Mar 30 08:44 10MB.dat.2
-rw-rw-r-- 1 batayl batayl 10M Mar 30 08:44 10MB.dat.3
?--------- ? ? ? ? ? 10MB.dat.5
drwxrwxrwx 1 root root 4.0K Mar 29 14:06 lost+found
This happens both on local disk and on network storage, but it only
happens if the upgraded file system starts up the first time using
directio. If it is started with alt-aio as the TroveMethod, everything
works as expected. It also only happens the first time the file system
is started; if I stop the server daemons and restart them, everything
operates as expected. I do have to kill -9 the server deamons, since
they will not exit gracefully.
My test is running on RHEL4 U8 i386 with kernel version 2.6.9-89.ELsmp
with two server nodes and one client. I was unable to recreate the
problem with a single server.
I attached verbose server logs from the time the daemon was started
after the upgrade until the client failed as well as client logs from
mount until the returned error. The cliffs notes are that one of the
servers logs as many unstuff requests as we have client retries
configured. The client fails at the end of the allotted retries. The
other server doesn't log anythign after starting.
Has anyone seen anything similar or know what might be going on?
Bart.
_______________________________________________
Pvfs2-developers mailing list
[email protected]
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers
_______________________________________________
Pvfs2-developers mailing list
[email protected]
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers