Whamcloud - gitweb
b=3359
authorphil <phil>
Fri, 20 May 2005 22:55:11 +0000 (22:55 +0000)
committerphil <phil>
Fri, 20 May 2005 22:55:11 +0000 (22:55 +0000)
r=lee@sandia.gov

libsysio fixes which always apply the umask before calling liblustre.
With these changes, liblustre can stop worrying about the umask entirely.

libsysio/src/mkdir.c
libsysio/src/mknod.c

index 1d89acd..ee59348 100644 (file)
@@ -76,6 +76,8 @@ SYSIO_INTERFACE_NAME(mkdir)(const char *path, mode_t mode)
                err = -EROFS;
                goto error;
        }
+       mode |= S_IFDIR;
+       mode &= ~(_sysio_umask & 0777); /* apply umask */
        err = (*pno->p_parent->p_base->pb_ino->i_ops.inop_mkdir)(pno, mode);
 error:
        P_RELE(pno);
index 288dcce..35ca0f9 100644 (file)
@@ -80,13 +80,17 @@ PREPEND(__, SYSIO_INTERFACE_NAME(xmknod))(int __ver,
        }
 
        /*
-        * Support only character-special and fifos right now.
+        * Support only regular, character-special and fifos right now.
+        * (mode & S_IFMT) == 0 is the same as S_IFREG.
         */
-       if (!(S_ISCHR(mode) || S_ISFIFO(mode))) {
+       if ((mode & S_IFMT) &&
+           !(S_ISREG(mode) || S_ISCHR(mode) || S_ISFIFO(mode))) {
                err = -EINVAL;
                goto out;
        }
 
+       mode &= ~(_sysio_umask & 0777); /* apply umask */
+
        INTENT_INIT(&intent, INT_CREAT, &mode, NULL);
        err = _sysio_namei(_sysio_cwd, path, ND_NEGOK, &intent, &pno);
        if (err)