]> git.decadent.org.uk Git - nfs-utils.git/commitdiff
Fix rquotad. nfs-utils-0-1-3
authorhjl <hjl>
Mon, 29 Nov 1999 19:21:16 +0000 (19:21 +0000)
committerhjl <hjl>
Mon, 29 Nov 1999 19:21:16 +0000 (19:21 +0000)
ChangeLog
README
configure
configure.in
nfs-utils.spec
utils/rquotad/rquota_server.c

index ddf213c08aaa72846587928c74838a426d8bf8af..0dc6f3586f65b989c81d1607f5c443a1f4c6a6ff 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+Mon Nov 29 11:17:35 1999  H.J. Lu <hjl@lucon.org>
+
+       * nfs-utils.spec (Version): Set to 0.1.3.
+
+       * configure.in (VERSION): Set to "nfs-utils 0.1.3".
+       * configure: Regenerated.
+
+       * README: Updated.
+
+Mon Nov 29 11:15:47 1999  H.J. Lu <hjl@lucon.org>
+
+       * utils/rquotad/rquota_server.c (nfsmount_to_devname): Removed.
+       (_PATH_DEV_DSK): Likewise.
+       (getquotainfo): Match the mounting point from /etc/mtab
+       instead of calling nfsmount_to_devname ().
+
 1999-11-24  Chip Salzenberg  <chip@valinux.com>
 
        * utils/statd/monitor.c (sm_mon_1_svc): Accept lockd callbacks
 1999-11-24  Chip Salzenberg  <chip@valinux.com>
 
        * utils/statd/monitor.c (sm_mon_1_svc): Accept lockd callbacks
diff --git a/README b/README
index 55079ca3593bdded4c00b3f88a7903704ce0753c..9dac65ea106c51ab2abc0ba3d672a59c8121e929 100644 (file)
--- a/README
+++ b/README
@@ -1,7 +1,7 @@
-This is the Linux NFS utility package version 0.1.2. It is based on
+This is the Linux NFS utility package version 0.1.3. It is based on
 knfsd 1.4.7.
 
 knfsd 1.4.7.
 
-WARNING: The NFS servers in Linux 2.2 to 2.2.12 are not compatible with
+WARNING: The NFS servers in Linux 2.2 to 2.2.13 are not compatible with
 other NFS client implemenations. If you plan to use Linux 2.2.x as an
 NFS server for non-Linux NFS clients, you should get the Linux NFS
 kernel from the Linux NFS CVS server:
 other NFS client implemenations. If you plan to use Linux 2.2.x as an
 NFS server for non-Linux NFS clients, you should get the Linux NFS
 kernel from the Linux NFS CVS server:
@@ -42,8 +42,8 @@ contribute to the Linux NFS project, please go to
 
 http://www.linuxnfs.sourceforge.org
 
 
 http://www.linuxnfs.sourceforge.org
 
-and login as "beta" with password "beta4u". You register yourself.
-Please send an email to nfs-admin@linuxnfs.sourceforge.org with
+You register yourself. Please send an email to
+nfs-admin@linuxnfs.sourceforge.org with
 
 1. Your user id on www.linuxnfs.sourceforge.org.
 2. The area in NFS you'd like to work on.
 
 1. Your user id on www.linuxnfs.sourceforge.org.
 2. The area in NFS you'd like to work on.
@@ -65,8 +65,8 @@ will get the latest version.
 
 The files are
 
 
 The files are
 
-ftp://ftp.linuxnfs.sourceforge.org/pub/nfs/nfs-utils-0.1.2.tar.gz
-ftp://ftp.linuxnfs.sourceforge.org/pub/nfs/nfs-utils-0.1.1-0.1.2.diff.gz
+ftp://ftp.linuxnfs.sourceforge.org/pub/nfs/nfs-utils-0.1.3.tar.gz
+ftp://ftp.linuxnfs.sourceforge.org/pub/nfs/nfs-utils-0.1.2-0.1.3.diff.gz
 
 To compile, just do
 
 
 To compile, just do
 
@@ -81,7 +81,7 @@ They are tested on RedHat 6.1.
 
 On RedHat 6.1, you can use
 
 
 On RedHat 6.1, you can use
 
-# rpm -ta nfs-utils-0.1.2.tar.gz
+# rpm -ta nfs-utils-0.1.3.tar.gz
 
 to build the source and binary RPMs.
 
 
 to build the source and binary RPMs.
 
@@ -95,4 +95,4 @@ Thanks.
 
 H.J.
 hjl@lucon.org
 
 H.J.
 hjl@lucon.org
-10/25/99
+11/29/99
index bf7546d0a7b38a96de0532e9be9d71868dcfa2ef..d0c6f0ceed7e790b2710d62654be1d14c76c862e 100755 (executable)
--- a/configure
+++ b/configure
@@ -544,7 +544,7 @@ fi
 
 
 # The nfs-utils version
 
 
 # The nfs-utils version
-VERSION="nfs-utils 0.1.2"
+VERSION="nfs-utils 0.1.3"
 
 
 # Check whether --with-statedir or --without-statedir was given.
 
 
 # Check whether --with-statedir or --without-statedir was given.
index 2293b6485ee719b0801a4b358f52c61fa13990f9..231c233f20fb1e37d0b8935c872434f829fbcd8d 100644 (file)
@@ -4,7 +4,7 @@ AC_INIT(rules.mk)
 AC_PREFIX_DEFAULT(/usr)
 
 # The nfs-utils version
 AC_PREFIX_DEFAULT(/usr)
 
 # The nfs-utils version
-VERSION="nfs-utils 0.1.2"
+VERSION="nfs-utils 0.1.3"
 AC_SUBST(VERSION)
 
 dnl *************************************************************
 AC_SUBST(VERSION)
 
 dnl *************************************************************
index 4619e615f5cf15a35ff37f53ad7b78652d3fd951..6ba9dd050b0e37f3c28298929470758c65af6cd2 100644 (file)
@@ -1,6 +1,6 @@
 Summary: The utilities for Linux NFS client and server.
 Name: nfs-utils
 Summary: The utilities for Linux NFS client and server.
 Name: nfs-utils
-Version: 0.1.2
+Version: 0.1.3
 Release: 1
 Source0: ftp://ftp.valinux.com/pub/support/hjl/nfs/%{name}-%{version}.tar.gz
 Group: System Environment/Daemons
 Release: 1
 Source0: ftp://ftp.valinux.com/pub/support/hjl/nfs/%{name}-%{version}.tar.gz
 Group: System Environment/Daemons
index 08c4f8c8c9eb750069829c879e96e449589226ea..e9167ca19692a3bbaf7f374614c74c53d894f654 100644 (file)
 #define TYPE_EXTENDED  0x01
 #define ACTIVE         0x02
 
 #define TYPE_EXTENDED  0x01
 #define ACTIVE         0x02
 
-#ifdef ELM
-#define _PATH_DEV_DSK   "/dev/dsk/"
-#else
-#define _PATH_DEV_DSK   "/dev/"
+#ifndef MNTTYPE_AUTOFS
+#define MNTTYPE_AUTOFS "autofs"
 #endif
 
 /*
 #endif
 
 /*
  */
 extern struct authunix_parms *unix_cred;
 
  */
 extern struct authunix_parms *unix_cred;
 
-char *nfsmount_to_devname(char *pathname, int *blksize)
-{
-   DIR *dp;
-   dev_t device;
-   struct stat st;
-   struct dirent *de;
-   static char *devicename = NULL;
-   static int devicelen = 0;
-
-   if (stat(pathname, &st) == -1)
-      return (char *)0;
-
-   device = st.st_dev;
-   *blksize = st.st_blksize;
-
-   /*
-    * search for devicename in _PATH_DEV_DSK dir.
-    */
-   if ((dp = opendir(_PATH_DEV_DSK)) == (DIR *)0)
-      return (char *)0;
-
-   while ((de = readdir(dp)) != (struct dirent *)0) {
-      if (!strcmp(de->d_name, ".") || !strcmp(de->d_name, ".."))
-         continue;
-
-      if (devicelen == 0) {
-        devicelen = sizeof (_PATH_DEV_DSK) + strlen (de->d_name) + 1;
-        devicename = (char *) xmalloc (devicelen);
-      }
-      else {
-         int newlen = sizeof (_PATH_DEV_DSK) + strlen (de->d_name) + 1;
-         if (newlen > devicelen) {
-             devicelen = newlen;
-             devicename = (char *) xrealloc (devicename, devicelen);
-         }
-      }
-
-      strcpy(devicename, _PATH_DEV_DSK);
-      strcat(devicename, de->d_name);
-      if (stat(devicename, &st) == -1)
-         continue;
-
-      if (!S_ISBLK(st.st_mode))
-         continue;
-
-      if ((device == st.st_rdev) && S_ISBLK(st.st_mode))
-         break;
-   }
-   closedir(dp);
-
-   if (de != (struct dirent *)0) {
-      return devicename;
-   } else
-      return (char *)0;
-}
-
 int in_group (gid_t *gids, u_int len, gid_t gid)
 {
    int cnt = 0;
 int in_group (gid_t *gids, u_int len, gid_t gid)
 {
    int cnt = 0;
@@ -126,8 +68,9 @@ getquota_rslt *getquotainfo(int flags, caddr_t *argp, struct svc_req *rqstp)
    FILE *fp;
    struct dqblk dq_dqb;
    struct mntent *mnt;
    FILE *fp;
    struct dqblk dq_dqb;
    struct mntent *mnt;
-   char *pathname, *devicename, *qfpathname;
+   char *pathname, *qfpathname;
    int fd, err, id, type;
    int fd, err, id, type;
+   struct stat st;
 
    /*
     * First check authentication.
 
    /*
     * First check authentication.
@@ -160,23 +103,30 @@ getquota_rslt *getquotainfo(int flags, caddr_t *argp, struct svc_req *rqstp)
       }
    }
 
       }
    }
 
-   /*
-    * Convert a nfs_mountpoint to a local devicename.
-    */
-   if ((devicename = nfsmount_to_devname(pathname,
-        &result.getquota_rslt_u.gqr_rquota.rq_bsize)) == (char *)0) {
-      result.status = Q_NOQUOTA;   
-      return(&result);
-   }
-
    fp = setmntent(MNTTAB, "r");
    while ((mnt = getmntent(fp)) != (struct mntent *)0) {
    fp = setmntent(MNTTAB, "r");
    while ((mnt = getmntent(fp)) != (struct mntent *)0) {
-      if (strcmp(devicename, mnt->mnt_fsname))
+      if (strcasecmp (mnt->mnt_dir, pathname))
          continue;
 
          continue;
 
+      if (mnt->mnt_fsname [0] != '/'
+         || strcasecmp (mnt->mnt_type, MNTTYPE_NFS) == 0
+         || strcasecmp (mnt->mnt_type, MNTTYPE_AUTOFS) == 0
+         || strcasecmp (mnt->mnt_type, MNTTYPE_SWAP) == 0
+         || strcasecmp (mnt->mnt_type, MNTTYPE_IGNORE) == 0
+         || stat(pathname, &st) == -1)
+         break;
+
+#if 0
+      result.getquota_rslt_u.gqr_rquota.rq_bsize = st.st_blksize;
+#else
+      /* All blocks reported are 512 Bytes blocks. */
+      result.getquota_rslt_u.gqr_rquota.rq_bsize = 512;
+#endif
+
       if (hasquota(mnt, type, &qfpathname)) {
       if (hasquota(mnt, type, &qfpathname)) {
-         if ((err = quotactl(QCMD(Q_GETQUOTA, type), devicename, id,
-            (caddr_t)&dq_dqb)) == -1 && !(flags & ACTIVE)) {
+         if ((err = quotactl(QCMD(Q_GETQUOTA, type), mnt->mnt_fsname,
+                            id, (caddr_t)&dq_dqb)) == -1
+            && !(flags & ACTIVE)) {
             if ((fd = open(qfpathname, O_RDONLY)) < 0)
            {
               free(qfpathname);
             if ((fd = open(qfpathname, O_RDONLY)) < 0)
            {
               free(qfpathname);