[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: SGI NFS problem with netCDF libsrc test?
- Subject: Re: SGI NFS problem with netCDF libsrc test?
- Date: Tue, 11 Nov 1997 19:13:14 -0700
> Glenn,
>
> In trying to duplicate a netCDF problem reported to support, I tried to
> run "make test" in the libsrc directory of the 3.3.1 distribution on
> chevy:
>
> netcdf-3/irix_6.2-mips/src/libsrc$ make test
> ar cru libnetcdf.a attr.o dim.o error.o libvers.o nc.o ncio.o
ncx.o putget.o string.o v1hpg.o v2i.o var.o
> : libnetcdf.a
> /bin/c89 -o t_nc -g t_nc.o -L. -lnetcdf
> ./t_nc
> trying again
> *** Error code 13 (bu21)
>
> This is repeatable, but only seems to happen when I'm running the test
> in an NFS-mounted directory (my /home/russ/netcdf-3/ directory). I had
> Mike create an NFS2 mount in /mnt/, and the same error still occurred.
> But if I copy the files to /tmp/ on chevy, everything seems to work
> fine.
>
> I doubt if it matters, but I'm using the following environment variables
> for building and testing:
>
> export CPPFLAGS=
> export CFLAGS=-g
> export CC=/bin/c89
> export FC=/bin/f77
> export FFLAGS=-g
> export CXX=/bin/CC
>
> I've already answered the support question by using the /tmp/ directory
> on chevy, but do you have any idea why running libsrc/t_nc on
> NFS-mounted directories on chevy is now failing?
The problem is that the first create is making a file with mode 0,
due to improper modes being set. This has already been reported and
fixed:
% cvs log posixio.c
...
revision 1.59
date: 1997/09/23 18:55:19; author: davis; state: Exp; lines: +14 -4
Use standard macros.
No need to set O_TRUNC when O_EXCL,
and having both set causes problems with IRIX 6.2 and NFS.
address@hidden (Ethan Alpert) 199709221820.MAA25471
You can seach for the discourse between Ethan and myself on this Subject
using the word IRIX in the email database.
Find the referenced revision as a patch attached.
-glenn
>Keywords: 199709221820.MAA25471
>Re: 970922: problem with nccreate on IRIX 6.2 using netcdf3.3.1
Index: posixio.c
===================================================================
RCS file: /upc/share/CVS/netcdf-3/libsrc/posixio.c,v
retrieving revision 1.59
retrieving revision 1.58
diff -c -r1.59 -r1.58
*** posixio.c 1997/09/23 18:55:19 1.59
--- posixio.c 1997/07/19 22:14:21 1.58
***************
*** 2,8 ****
* Copyright 1996, University Corporation for Atmospheric Research
* See netcdf/COPYRIGHT file for copying and redistribution conditions.
*/
! /* $Id: posixio.c,v 1.59 1997/09/23 18:55:19 davis Exp $ */
#include "ncconfig.h"
#include <assert.h>
--- 2,8 ----
* Copyright 1996, University Corporation for Atmospheric Research
* See netcdf/COPYRIGHT file for copying and redistribution conditions.
*/
! /* $Id: posixio.c,v 1.58 1997/07/19 22:14:21 davis Exp $ */
#include "ncconfig.h"
#include <assert.h>
***************
*** 738,751 ****
#define NCIO_MINBLOCKSIZE 256
#define NCIO_MAXBLOCKSIZE 268435456 /* sanity check, about X_SIZE_T_MAX/8 */
- #ifdef S_IRUSR
- #define NC_DEFAULT_CREAT_MODE \
- (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH) /* 0666 */
-
- #else
- #define NC_DEFAULT_CREAT_MODE 0666
- #endif
-
int
ncio_create(const char *path, int ioflags,
size_t initialsz,
--- 738,743 ----
***************
*** 753,759 ****
ncio **nciopp, void **const igetvpp)
{
ncio *nciop;
! int oflags = (O_RDWR|O_CREAT);
int fd;
int status;
--- 745,751 ----
ncio **nciopp, void **const igetvpp)
{
ncio *nciop;
! int oflags = (O_RDWR|O_CREAT|O_TRUNC);
int fd;
int status;
***************
*** 771,786 ****
if(fIsSet(ioflags, NC_NOCLOBBER))
fSet(oflags, O_EXCL);
- else
- fSet(oflags, O_TRUNC);
#ifdef O_BINARY
fSet(oflags, O_BINARY);
#endif
#ifdef vms
! fd = open(path, oflags, NC_DEFAULT_CREAT_MODE, "ctx=stm");
#else
/* Should we mess with the mode based on NC_SHARE ?? */
! fd = open(path, oflags, NC_DEFAULT_CREAT_MODE);
#endif
#if 0
(void) fprintf(stderr, "ncio_create(): path=\"%s\"\n", path);
--- 763,776 ----
if(fIsSet(ioflags, NC_NOCLOBBER))
fSet(oflags, O_EXCL);
#ifdef O_BINARY
fSet(oflags, O_BINARY);
#endif
#ifdef vms
! fd = open(path, oflags, 0666, "ctx=stm");
#else
/* Should we mess with the mode based on NC_SHARE ?? */
! fd = open(path, oflags, 0666);
#endif
#if 0
(void) fprintf(stderr, "ncio_create(): path=\"%s\"\n", path);