Andrew Deason wrote:
dtrace: script 'enospc.d' matched 1066 probes
/usr/local/bin/bash: line 110: fullvolume/bar: No space left on device
CPU     ID                    FUNCTION:NAME
0     7103          ntoh_syserr_conv:return Returned ENOSPC
0     7657                rx_EndCall:return Returned ENOSPC
0     6683          RXAFS_CreateFile:return Returned ENOSPC
0     7653             afs_CheckCode:return Returned ENOSPC
0     6955                afs_create:return Returned ENOSPC
0     6975               gafs_create:return Returned ENOSPC
^C

So, looks like the culript is ntoh_syserr_conv in src/rx/rx_misc.c,
which explicitly returns ENOSPC instead of EDQUOT when Solaris is
detected. I've attached a patch (untested) to just return EDQUOT when
it's defined, and ENOSPC otherwise. There's a lot of other code in
there, though, that assumes EDQUOT doesn't exist on Solaris at all.
There's plenty of other functions that appear to have the same issue as
this that I didn't touch at all.

It seems like a lot of conditionals could be changed from
defined(AFS_SUN5_ENV) to defined(AFS_SUN5_ENV) &&
!defined(AFS_SUN58_ENV) or something, but I thought checking on
EDQUOT's presence would be more robust.

Thanks.  I will commit a fix.


Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to