[Libsysio-commit] HEAD: libsysio/src dev.c module.mk statvfs.c statvfs64.c
Brought to you by:
lward
From: Lee W. <lw...@us...> - 2007-04-30 23:24:16
|
Update of /cvsroot/libsysio/libsysio/src In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv2987/src Modified Files: dev.c module.mk statvfs.c Removed Files: statvfs64.c Log Message: Restore support of statvfs{,64}. Index: dev.c =================================================================== RCS file: /cvsroot/libsysio/libsysio/src/dev.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -w -b -B -p -r1.10 -r1.11 --- dev.c 4 Aug 2005 20:17:10 -0000 1.10 +++ dev.c 30 Apr 2007 23:24:13 -0000 1.11 @@ -75,9 +75,7 @@ const struct inode_ops _sysio_nodev_ops _sysio_nodev_inop_datasync, _sysio_nodev_inop_ioctl, _sysio_nodev_inop_mknod, -#ifdef _HAVE_STATVFS _sysio_nodev_inop_statvfs, -#endif _sysio_nodev_inop_gone }; Index: module.mk =================================================================== RCS file: /cvsroot/libsysio/libsysio/src/module.mk,v retrieving revision 1.11 retrieving revision 1.12 diff -u -w -b -B -p -r1.11 -r1.12 --- module.mk 30 Apr 2007 16:52:20 -0000 1.11 +++ module.mk 30 Apr 2007 23:24:13 -0000 1.12 @@ -1,8 +1,3 @@ -# -# Note; Remove statvfs{,64}.c until we decide what to do with them. -# Lee; Tue Feb 24 09:37:32 EST 2004 -# - if WITH_LUSTRE_HACK FILE_SUPPORT = src/file_hack.c else @@ -23,7 +18,7 @@ SRCDIR_SRCS = src/access.c src/chdir.c s src/link.c src/lseek.c src/mkdir.c \ src/mknod.c src/mount.c src/namei.c \ src/open.c src/rw.c src/reconcile.c src/rename.c \ - src/rmdir.c src/stat.c \ + src/rmdir.c src/stat.c src/statvfs.c \ src/stddir.c src/readdir.c src/readdir64.c \ src/symlink.c src/readlink.c \ src/truncate.c src/unlink.c src/utime.c \ Index: statvfs.c =================================================================== RCS file: /cvsroot/libsysio/libsysio/src/statvfs.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -w -b -B -p -r1.13 -r1.14 --- statvfs.c 30 Apr 2007 16:52:20 -0000 1.13 +++ statvfs.c 30 Apr 2007 23:24:13 -0000 1.14 @@ -41,13 +41,13 @@ * le...@sa... */ -#ifndef BSD - #include <unistd.h> #include <errno.h> #include <assert.h> -#include <sys/statvfs.h> +#include <sys/vfs.h> #include <sys/types.h> +#include <sys/stat.h> +#include <sys/statvfs.h> #include <sys/queue.h> #include "sysio.h" @@ -53,12 +53,79 @@ #include "sysio.h" #include "inode.h" #include "file.h" + #include "sysio-symbols.h" +static int +_sysio_statvfs(const char *path, struct intnl_statvfs *buf) +{ + int err; + struct pnode *pno; + + err = _sysio_namei(_sysio_cwd, path, 0, NULL, &pno); + if (err) + return err; + + err = PNOP_STATVFS(pno, buf); + P_RELE(pno); + return err; +} + +static int +_sysio_fstatvfs(int fd, struct intnl_statvfs *buf) +{ + int err; + struct file *filp; + + err = 0; + filp = _sysio_fd_find(fd); + if (!filp) + return -EBADF; + + err = PNOP_STATVFS(filp->f_pno, buf); + return err; +} + +#if defined(_LARGEFILE64_SOURCE) +int +SYSIO_INTERFACE_NAME(statvfs64)(const char *path, struct statvfs64 *buf) +{ + int err; + SYSIO_INTERFACE_DISPLAY_BLOCK; + + SYSIO_INTERFACE_ENTER(statvfs64, path); + err = _sysio_statvfs(path, buf); + SYSIO_INTERFACE_RETURN(err ? -1 : 0, err, statvfs64, buf); +} + +#ifdef REDSTORM +#undef __statvfs64 +sysio_sym_weak_alias(SYSIO_INTERFACE_NAME(statvfs64), + PREPEND(__, SYSIO_INTERFACE_NAME(statvfs64))) +#endif + +int +SYSIO_INTERFACE_NAME(fstatvfs64)(int fd, struct statvfs64 *buf) +{ + int err; + SYSIO_INTERFACE_DISPLAY_BLOCK; + + SYSIO_INTERFACE_ENTER(fstatvfs64, fd, buf); + err = _sysio_fstatvfs(fd, buf); + SYSIO_INTERFACE_RETURN(err ? -1 : 0, err, fstatvfs64, buf); +} + +#ifdef REDSTORM +#undef __fstatvfs64 +sysio_sym_weak_alias(SYSIO_INTERFACE_NAME(fstatvfs64), + PREPEND(__, SYSIO_INTERFACE_NAME(fstatvfs64))) +#endif +#endif /* defined(_LARGEFILE64_SOURCE) */ + #undef statvfs #undef fstatvfs -#ifndef INTNL_STATVFS_IS_NATURAL +#if defined(_LARGEFILE64_SOURCE) static void convstatvfs(struct statvfs *stvfsbuf, struct intnl_statvfs *istvfsbuf) { @@ -74,36 +141,27 @@ convstatvfs(struct statvfs *stvfsbuf, st stvfsbuf->f_flag = istvfsbuf->f_flag; stvfsbuf->f_namemax = istvfsbuf->f_namemax; } -#endif +#endif /* defined(_LARGEFILE64_SOURCE) */ int SYSIO_INTERFACE_NAME(statvfs)(const char *path, struct statvfs *buf) { int err; - struct pnode *pno; -#ifdef INTNL_STATVFS_IS_NATURAL -#define _call_buf buf -#else +#if defined(_LARGEFILE64_SOURCE) struct intnl_statvfs _call_buffer; struct intnl_statvfs *_call_buf = &_call_buffer; -#endif +#else +#define _call_buf buf +#endif /* defined(_LARGEFILE64_SOURCE) */ SYSIO_INTERFACE_DISPLAY_BLOCK; SYSIO_INTERFACE_ENTER(statvfs, path); - err = _sysio_namei(_sysio_cwd, path, 0, NULL, &pno); - if (err) - goto out; - - err = PNOP_STATVFS(pno, _call_buf); - P_RELE(pno); - if (err) - goto err; -#ifndef INTNL_STATVFS_IS_NATURAL + err = _sysio_statvfs(path, _call_buf); +#if defined(_LARGEFILE64_SOURCE) + if (!err) convstatvfs(buf, _call_buf); -#endif - goto out; -err: -out: +#undef _call_buf +#endif /* defined(_LARGEFILE64_SOURCE) */ SYSIO_INTERFACE_RETURN(err ? -1 : 0, err, statvfs, buf); } @@ -117,32 +175,21 @@ int SYSIO_INTERFACE_NAME(fstatvfs)(int fd, struct statvfs *buf) { int err; - struct file *filp; -#ifdef INTNL_STATVFS_IS_NATURAL -#define _call_buf buf -#else +#if defined(_LARGEFILE64_SOURCE) struct intnl_statvfs _call_buffer; struct intnl_statvfs *_call_buf = &_call_buffer; -#endif +#else +#define _call_buf buf +#endif /* defined(_LARGEFILE64_SOURCE) */ SYSIO_INTERFACE_DISPLAY_BLOCK; SYSIO_INTERFACE_ENTER(fstatvfs, fd); - err = 0; - filp = _sysio_fd_find(fd); - if (!filp) { - err = -EBADF; - goto out; - } - - err = PNOP_STATVFS(filp->f_pno, _call_buf); - if (err) - goto err; + err = _sysio_fstatvfs(fd, _call_buf); #ifndef INTNL_STATVFS_IS_NATURAL + if (!err) convstatvfs(buf, _call_buf); +#undef _call_buf #endif - goto out; -err: -out: SYSIO_INTERFACE_RETURN(err ? -1 : 0, err, fstatvfs, buf); } @@ -151,5 +198,3 @@ out: sysio_sym_weak_alias(SYSIO_INTERFACE_NAME(fstatvfs), PREPEND(__, SYSIO_INTERFACE_NAME(fstatvfs))) #endif - -#endif /* ifndef BSD */ --- statvfs64.c DELETED --- |