SGI 2GByte TCP limit
Vernon Schryver
vjs at rhyolite.wpd.sgi.com
Wed Mar 6 03:21:19 AEST 1991
In article <9103042301.aa02195 at WOLF.BRL.MIL>, mike at BRL.MIL (Mike Muuss) writes:
> .... Running from SGI to SGI
> (IRIX Release 3.3.1), the sys-write() call returns an error 27
> after about 1 hour and 47 minutes of data transfer. (Alas, we don't
> know the exact byte count at this point).
> #define EFBIG 27 /* File too large */
>
> ...
> So, my questions to SGI are:
>
> *) Is this limit intentional?
> *) If yes, why?
Be nice.
The 2/4GB SystemV limit has been a matter of internal controversy for a
years. No one who has proposed a solution has argued with any conviction.
> *) If no, when will it be fixed?
RealSoonNow. If we're lucky in figuring out a clean fix, and in navigating
the shoals of release cycles, in the NextMajorRelease.
> *) Is there an easy work-around, like a periodic lseek(fd,0L,0) ?
The offending, largely standard SVR3 code is in rdwr() is:
if (fp->f_offset < 0) {
u.u_error = EFBIG;
and later
if ((type != IFCHR) || (cdevsw[major(ip->i_rdev)].d_str == NULL))
fp->f_offset += uap->count - u.u_count;
My obviously false recollection is that we faked sockets as IFCHR devices
under the FSS years ago when we stuck 4.3BSD TCP into 3.4. Oh, well.
With `dbx -k /unix /dev/kmem` you could patch the the first test in a
running system. (Look near line 110 in file sys2.c. Dbx knows line
numbers even if you do not have source.) It's too bad we don't have an
equivalent of `adb -w...`. If you can change RDUMP to use send() instead
of write(), it seems likely that the problem would go away there. I doubt
an lseek() would help because of the following in seek():
if ((ip->i_ftype == IFIFO) || (ip->i_ftype == IFSOCK)) {
u.u_error = ESPIPE;
Vernon Schryver, vjs at sgi.com
More information about the Comp.sys.sgi
mailing list