Whamcloud - gitweb
LU-433 ldiskfs: remove jbd2-jcberr patch from kernel
[fs/lustre-release.git] / libsysio / include / file.h
index 161b887..d30e84e 100644 (file)
@@ -9,7 +9,7 @@
  *    terms of the GNU Lesser General Public License
  *    (see cit/LGPL or http://www.gnu.org/licenses/lgpl.html)
  *
- *    Cplant(TM) Copyright 1998-2005 Sandia Corporation. 
+ *    Cplant(TM) Copyright 1998-2006 Sandia Corporation. 
  *    Under the terms of Contract DE-AC04-94AL85000, there is a non-exclusive
  *    license for use of this work by or on behalf of the US Government.
  *    Export of this program may require a license from the United States
@@ -61,7 +61,7 @@
 #define _SEEK_MAX(fil) \
        (_F_LARGEFILE(fil) ? _SYSIO_OFF_T_MAX : LONG_MAX)
 
-#if _LARGEFILE64_SOURCE
+#ifdef _LARGEFILE64_SOURCE
 #define        _SYSIO_FLOCK    flock64
 #else
 #define        _SYSIO_FLOCK    flock
@@ -112,6 +112,21 @@ struct file {
                (fil)->f_flags = (flags); \
        } while (0)
 
+/*
+ * Determine if a file may be read/written.
+ *
+ * Given a ptr to an open file table entry and a flag indicating desired
+ * access return non-zero if the file record indicates that the access is
+ * permitted or zero, if not.
+ *
+ * 'r' for read access check
+ * 'w' for write access check
+ */
+
+#define F_CHKRW(_fil, _c) \
+       (((_c) == 'r' && !((_fil)->f_flags & O_WRONLY)) || \
+        ((_c) == 'w' && ((_fil)->f_flags & (O_WRONLY | O_RDWR))))
+
 struct ioctx;
 
 extern struct file *_sysio_fnew(struct inode *ino, int flags);
@@ -122,7 +137,7 @@ extern struct file *_sysio_fd_find(int fd);
 extern int _sysio_fd_set(struct file *fil, int fd, int force);
 extern int _sysio_fd_dup(int oldfd, int newfd, int force);
 extern int _sysio_fd_close_all(void);
-#if ZERO_SUM_MEMORY
+#ifdef ZERO_SUM_MEMORY
 extern void _sysio_fd_shutdown(void);
 #endif
 extern _SYSIO_OFF_T _sysio_lseek_prepare(struct file *fil,