Hi All.

(I'm not sure if this should go to openafs-info, or the devel list, so I 
apologise if I've gotten that wrong).

We are using a small utility here, written by the good people at ltu.se, to 
backup our OpenAFS cell to TSM.  The tool is "tsmafs" 
(/afs/ltu.se/misc/tsmafs/tsmafs-0.2.tgz), which includes a program called 
"tabackup" to perform the actual backup.  We found what we believe is a bug, in 
which rx_Read() is used to read data from AFS, but the scenario where this 
returns 0 bytes is not checked.

The outcome of this is that the tool would occasionally read 0 bytes and then 
continue on, assuming that it had successfully backed up the file in question, 
leaving perhaps only a fragment of the file on TSM.

The code _was_ originally as follows (tabackup.c:storefile():322):

               if ((b = rx_Read(rxc, buf, len)) < 0)
                        break;

.. so we added the following extra sanity checking to detect this and raise an 
error:

+                if (b == 0)
+                {
+                   rx_error_code = rx_Error(rxc);
+                   warnx("zero length rx_Read for %s%s", hl, ll);
+                   warnx("rx error (%ld) tsn (%lld) tsz (%lld) len (%d)", 
rx_error_code, tsn, tsz, len);
+                   break;
+                }

I suppose my question is: is it normal/ok for rx_Read() to return 0, or is this 
in itself indicative of a problem or bug somewhere?

We are running OpenAFS 1.4.12-1.1.2 on the (RHEL5) client.  Fileserver is 
1.4.10 on Solaris-x86.

Any pointers appreciated ...

Regards,

Robert.
_______________________________________________
OpenAFS-info mailing list
[email protected]
https://lists.openafs.org/mailman/listinfo/openafs-info

Reply via email to