Thread: [Libsysio-commit] unification: libsysio/include inode.h
Brought to you by:
lward
From: Lee W. <lw...@us...> - 2007-02-05 16:25:29
|
Update of /cvsroot/libsysio/libsysio/include In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv25174 Modified Files: Tag: unification inode.h Log Message: Changed the PNOP_OPEN macro. It uses the parent only when flags has O_CREAT set. Otherwise, the targeted path-node is used. Index: inode.h =================================================================== RCS file: /cvsroot/libsysio/libsysio/include/inode.h,v retrieving revision 1.27.2.1 retrieving revision 1.27.2.2 diff -u -w -b -B -p -r1.27.2.1 -r1.27.2.2 --- inode.h 5 Feb 2007 15:54:27 -0000 1.27.2.1 +++ inode.h 5 Feb 2007 16:25:24 -0000 1.27.2.2 @@ -314,7 +314,9 @@ struct pnode { _PNOP_MKCALL((_pno), readlink, \ (_pno), (_buf), (_bufsiz)) #define PNOP_OPEN(_pno, _flags, _mode) \ - _PNOP_MKCALL((_pno)->p_parent, open, \ + _PNOP_MKCALL((((_flags) & O_CREAT) ? \ + (_pno)->p_parent : \ + (_pno)), open, \ (_pno), (_flags), (_mode)) #define PNOP_CLOSE(_pno) \ _PNOP_MKCALL((_pno), close, \ |
From: Lee W. <lw...@us...> - 2007-04-11 20:46:36
|
Update of /cvsroot/libsysio/libsysio/include In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv25546 Modified Files: Tag: unification inode.h Log Message: Added prototypes for _sysio_p_unlink, _sysio_p_rmdir, and _sysio_p_rename. Changed the name of _sysio_setattr to _sysio_p_setattr for consistency. Some syntactic prettiness changes Index: inode.h =================================================================== RCS file: /cvsroot/libsysio/libsysio/include/inode.h,v retrieving revision 1.27.2.3 retrieving revision 1.27.2.4 diff -u -w -b -B -p -r1.27.2.3 -r1.27.2.4 --- inode.h 10 Apr 2007 21:25:30 -0000 1.27.2.3 +++ inode.h 11 Apr 2007 20:46:32 -0000 1.27.2.4 @@ -36,7 +36,7 @@ * Lee Ward * Sandia National Laboratories, New Mexico * P.O. Box 5800 - * Albuquerque, NM 87185-1110 + * Albuquerque, NM 87185-1319 * * le...@sa... */ @@ -286,10 +286,9 @@ struct pnode { #define PNOP_FUNC(_pno, _fbase) \ ((_pno)->p_base->pb_ino->i_ops.inop_##_fbase) #define _PNOP_MKCALL(_pno, _fbase, ...) \ - ((_pno)->p_base->pb_ino ? \ - PNOP_CALL(PNOP_FUNC(_pno, _fbase), __VA_ARGS__) : \ - -ESTALE) - + ((_pno)->p_base->pb_ino \ + ? PNOP_CALL(PNOP_FUNC(_pno, _fbase), __VA_ARGS__) \ + : -ESTALE) /* * Operations */ @@ -532,13 +531,18 @@ extern struct pnode *_sysio_p_new_alias( struct pnode_base *pb, struct mount *mnt); extern void _sysio_p_gone(struct pnode *pno); -extern void _sysio_pb_disconnect(struct pnode_base *pb); extern size_t _sysio_p_prune(struct pnode *root); extern int _sysio_p_kill_all(struct pnode *root); +extern int _sysio_pb_pathof(struct pnode_base *pb, + char separator, + char **pathp); extern char *_sysio_pb_path(struct pnode_base *pb, char separator); -extern int _sysio_setattr(struct pnode *pno, +extern int _sysio_p_setattr(struct pnode *pno, unsigned mask, struct intnl_stat *stbuf); +extern int _sysio_p_unlink(struct pnode *pno); +extern int _sysio_p_rmdir(struct pnode *pno); +extern int _sysio_p_rename(struct pnode *old, struct pnode *new); extern void _sysio_do_noop(void); extern void _sysio_do_illop(void); extern int _sysio_do_ebadf(void); |
From: Lee W. <lw...@us...> - 2007-04-12 17:04:06
|
Update of /cvsroot/libsysio/libsysio/include In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv841 Modified Files: Tag: unification inode.h Log Message: Modified _PNOP_MKCALL macro to use the root pnode's attached inode -- Must *always* be present -- when the passed pnode has no attached inode. This should have the, now correct, effect of generating revalidations on extant nodes but applying the correct ops when the alias is not yet attached to an inode. Index: inode.h =================================================================== RCS file: /cvsroot/libsysio/libsysio/include/inode.h,v retrieving revision 1.27.2.4 retrieving revision 1.27.2.5 diff -u -w -b -B -p -r1.27.2.4 -r1.27.2.5 --- inode.h 11 Apr 2007 20:46:32 -0000 1.27.2.4 +++ inode.h 12 Apr 2007 17:04:02 -0000 1.27.2.5 @@ -281,93 +281,74 @@ struct pnode { /* * Path node meta-call. */ -#define PNOP_CALL(_f, ...) \ +#define INOP_CALL(_f, ...) \ ((*_f)(__VA_ARGS__)) +#define _INOP_FUNC(_ino, _fbase) \ + ((_ino)->i_ops.inop_##_fbase) #define PNOP_FUNC(_pno, _fbase) \ - ((_pno)->p_base->pb_ino->i_ops.inop_##_fbase) + _INOP_FUNC((_pno)->p_base->pb_ino, _fbase) +#define _PNOP_CALL(_pno, _fbase, ...) \ + INOP_CALL(PNOP_FUNC((_pno), _fbase), __VA_ARGS__) #define _PNOP_MKCALL(_pno, _fbase, ...) \ ((_pno)->p_base->pb_ino \ - ? PNOP_CALL(PNOP_FUNC(_pno, _fbase), __VA_ARGS__) \ - : -ESTALE) + ? _PNOP_CALL((_pno), _fbase, __VA_ARGS__) \ + : _PNOP_CALL((_pno)->p_mount->mnt_root, _fbase, __VA_ARGS__)) + /* * Operations */ #define PNOP_LOOKUP(_pno, _inop, _intnt, _path) \ - _PNOP_MKCALL((_pno)->p_parent, lookup, \ - (_pno), (_inop), (_intnt), (_path)) + _PNOP_MKCALL((_pno), lookup, (_pno), (_inop), (_intnt), (_path)) #define PNOP_GETATTR(_pno, _stbuf) \ - _PNOP_MKCALL((_pno), getattr, \ - (_pno), (_pno)->p_base->pb_ino, (_stbuf)) + _PNOP_CALL((_pno), getattr, (_pno), (_pno)->p_base->pb_ino, (_stbuf)) #define PNOP_SETATTR(_pno, _mask, _stbuf) \ - _PNOP_MKCALL((_pno), setattr, \ + _PNOP_CALL((_pno), setattr, \ (_pno), (_pno)->p_base->pb_ino, (_mask), (_stbuf)) #define PNOP_FILLDIRENTRIES(_pno, _posp, _buf, _nbytes) \ - _PNOP_MKCALL((_pno), filldirentries, \ + _PNOP_CALL((_pno), filldirentries, \ (_pno)->p_base->pb_ino, (_posp), (_buf), (_nbytes)) #define PNOP_MKDIR(_pno, _mode) \ - _PNOP_MKCALL((_pno)->p_parent, mkdir, \ - (_pno), (_mode)) + _PNOP_MKCALL((_pno), mkdir, (_pno), (_mode)) #define PNOP_RMDIR(_pno) \ - _PNOP_MKCALL((_pno), rmdir, \ - (_pno)) + _PNOP_MKCALL((_pno), rmdir, (_pno)) #define PNOP_SYMLINK(_pno, _data) \ - _PNOP_MKCALL((_pno)->p_parent, symlink, \ - (_pno), (_data)) + _PNOP_MKCALL((_pno), symlink, (_pno), (_data)) #define PNOP_READLINK(_pno, _buf, _bufsiz) \ - _PNOP_MKCALL((_pno), readlink, \ - (_pno), (_buf), (_bufsiz)) + _PNOP_CALL((_pno), readlink, (_pno), (_buf), (_bufsiz)) #define PNOP_OPEN(_pno, _flags, _mode) \ - _PNOP_MKCALL((((_flags) & O_CREAT) ? \ - (_pno)->p_parent : \ - (_pno)), open, \ - (_pno), (_flags), (_mode)) + _PNOP_MKCALL((_pno), open, (_pno), (_flags), (_mode)) #define PNOP_CLOSE(_pno) \ - _PNOP_MKCALL((_pno), close, \ - (_pno)->p_base->pb_ino) + _PNOP_CALL((_pno), close, (_pno)->p_base->pb_ino) #define PNOP_LINK(_old, _new) \ - _PNOP_MKCALL((_old)->p_parent, link, \ - (_old), (_new)) + _PNOP_CALL((_old), link, (_old), (_new)) #define PNOP_UNLINK(_pno) \ - _PNOP_MKCALL((_pno), unlink, \ - (_pno)) + _PNOP_CALL((_pno), unlink, (_pno)) #define PNOP_RENAME(_old, _new) \ - _PNOP_MKCALL((_old)->p_parent, rename, \ - (_old), (_new)) + _PNOP_CALL((_old), rename, (_old), (_new)) #define PNOP_READ(_pno, _ioctx) \ - _PNOP_MKCALL((_pno), read, \ - (_pno)->p_base->pb_ino, (_ioctx)) + _PNOP_CALL((_pno), read, (_pno)->p_base->pb_ino, (_ioctx)) #define PNOP_WRITE(_pno, _ioctx) \ - _PNOP_MKCALL((_pno), write, \ - (_pno)->p_base->pb_ino, (_ioctx)) + _PNOP_CALL((_pno), write, (_pno)->p_base->pb_ino, (_ioctx)) #define PNOP_POS(_pno, _off) \ - _PNOP_MKCALL((_pno), pos, \ - (_pno)->p_base->pb_ino, (_off)) + _PNOP_CALL((_pno), pos, (_pno)->p_base->pb_ino, (_off)) #define PNOP_IODONE(_pno, _ioctx) \ - _PNOP_MKCALL((_pno), iodone, \ - (_ioctx)) + _PNOP_CALL((_pno), iodone, (_ioctx)) #define PNOP_FCNTL(_pno, _cmd, _ap, _rtn) \ - _PNOP_MKCALL((_pno), fcntl, \ - (_pno)->p_base->pb_ino, (_cmd), (_ap), (_rtn)) + _PNOP_CALL((_pno), fcntl, (_pno)->p_base->pb_ino, (_cmd), (_ap), (_rtn)) #define PNOP_SYNC(_pno) \ - _PNOP_MKCALL((_pno), sync, \ - (_pno)->p_base->pb_ino) + _PNOP_CALL((_pno), sync, (_pno)->p_base->pb_ino) #define PNOP_DATASYNC(_pno) \ - _PNOP_MKCALL((_pno), datasync, \ - (_pno)->p_base->pb_ino) + _PNOP_CALL((_pno), datasync, (_pno)->p_base->pb_ino) #define PNOP_IOCTL(_pno, _request, _ap) \ - _PNOP_MKCALL((_pno), ioctl, \ - (_pno)->p_base->pb_ino, (_request), (_ap)) + _PNOP_CALL((_pno), ioctl, (_pno)->p_base->pb_ino, (_request), (_ap)) #define PNOP_MKNOD(_pno, _mode, _dev) \ - _PNOP_MKCALL((_pno)->p_parent, mknod, \ - (_pno), (_mode), (_dev)) + _PNOP_MKCALL((_pno), mknod, (_pno), (_mode), (_dev)) #ifdef _HAVE_STATVFS #define PNOP_STATVFS(_pno, _buf) \ - _PNOP_MKCALL((_pno), statvfs, \ - (_pno), (_pno)->p_base->pb_ino, (_buf)) + _PNOP_CALL((_pno), statvfs, (_pno), (_pno)->p_base->pb_ino, (_buf)) #endif #define PNOP_GONE(_pno) \ - _PNOP_MKCALL((_pno), gone, \ - (_pno)->p_base->pb_ino) + _PNOP_CALL((_pno), gone, (_pno)->p_base->pb_ino) /* * An intent record allows callers of namei and lookup to pass some information |