bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

nfsd: minor bugfixes


From: David Walter
Subject: nfsd: minor bugfixes
Date: Sun, 24 Nov 2002 02:32:05 -0500

A few questions, if someone can help.
I found a few bugs in nfsd after some rather tedious tail chasing.

I am not sure about a few things though.

nfsd failed to create files from remote non-hurd server and was
expecting anything but a -1 for an input size. 

nfsd also failed to correctly write the data. 

Both appear to be working now.

file_set_size seems to be failing on the value of (unsigned)-1
(4 gig). This caused the creation to fail. -1 is used to designate set
size unnecessary. (I haven't looked into this further)

I don't know (and don't know what reference to use to find) whether
with large files, this is an incorrect assumption (using the code of
-1).

I suspect that with the other dependencies on NFS2 in the code that
these aren't issues, until NFS3 support is added to nfsd?

2002-11-24  David Walter  <dwalter@syr.edu>

        * ops.c (op_create): changed size from off_t to loff_t
        cast size as int (not unsigned) in test (size == -1)
        (complete_setattr):  changed size from off_t to loff_t
        (op_read):  changed size from off_t to loff_t
        (op_write):  changed size from off_t to loff_t,
        changed assignment from *reply to bp = (char *) p;
        (where p is in the nfs buffer)



cvs server: Diffing .
Index: ChangeLog
===================================================================
RCS file: /cvsroot/hurd/hurd/nfsd/ChangeLog,v
retrieving revision 1.22
diff --unified -w -i -r1.22 ChangeLog
--- ChangeLog   29 Sep 2002 15:12:48 -0000      1.22
+++ ChangeLog   24 Nov 2002 07:23:51 -0000
@@ -1,3 +1,14 @@
+2002-11-24  David Walter  <dwalter@syr.edu>
+
+       * ops.c (op_create): changed size from off_t to loff_t
+       cast size as int (not unsigned) in test (size == -1)
+       (complete_setattr):  changed size from off_t to loff_t
+       (op_read):  changed size from off_t to loff_t
+       (op_write):  changed size from off_t to loff_t,
+       changed assignment from *reply to bp = (char *) p;
+       (where p is in the nfs buffer)
+
+
 2002-09-29  Marcus Brinkmann  <marcus@gnu.org>
 
        * loop.c (server_loop): Use memset instead bzero.
Index: Makefile
===================================================================
RCS file: /cvsroot/hurd/hurd/nfsd/Makefile,v
retrieving revision 1.3
diff --unified -w -i -r1.3 Makefile
--- Makefile    17 Sep 1996 16:43:00 -0000      1.3
+++ Makefile    24 Nov 2002 07:23:51 -0000
@@ -22,6 +22,7 @@
 makemode := utility
 
 SRCS = cache.c loop.c main.c ops.c fsys.c xdr.c
+#SRCS = cache.c loop.c main.c ops.c fsys.c xdr.c decode.c
 OBJS = $(subst .c,.o,$(SRCS))
 LCLHDRS = nfsd.h
 target = nfsd
Index: ops.c
===================================================================
RCS file: /cvsroot/hurd/hurd/nfsd/ops.c,v
retrieving revision 1.8
diff --unified -w -i -r1.8 ops.c
--- ops.c       29 Sep 2002 15:12:48 -0000      1.8
+++ ops.c       24 Nov 2002 07:23:51 -0000
@@ -60,7 +60,7 @@
                  int *p)
 {
   uid_t uid, gid;
-  off_t size;
+  loff_t size;
   time_value_t atime, mtime;
   struct stat st;
   error_t err;
@@ -233,7 +233,7 @@
         int **reply,
         int version)
 {
-  off_t offset;
+  loff_t offset;
   size_t count;
   char buf[2048], *bp = buf;
   mach_msg_type_number_t buflen = sizeof (buf);
@@ -272,7 +272,7 @@
          int **reply,
          int version)
 {
-  off_t offset;
+  loff_t offset;
   size_t count;
   error_t err;
   mach_msg_type_number_t amt;
@@ -285,7 +285,7 @@
   p++;
   count = ntohl (*p);
   p++;
-  bp = (char *) *reply;
+  bp = (char *) p;
 
   while (count)
     {
@@ -323,7 +323,7 @@
   struct stat st;
   mode_t mode;
   int statchanged = 0;
-  off_t size;
+  loff_t size;
 
   p = decode_name (p, &name);
   mode = ntohl (*p);
@@ -351,7 +351,7 @@
 
   size = ntohl (*p);
   p++;
-  if (size != -1 && size != st.st_size)
+  if ((int) size != -1 && size != st.st_size)
     {
       err = file_set_size (newport, size);
       statchanged = 1;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]