Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / include / linux / vserver / xid.h
index 3472def..2e4349e 100644 (file)
@@ -1,10 +1,17 @@
 #ifndef _VX_XID_H
 #define _VX_XID_H
 
+#include <linux/config.h>
 
-#define        XID_TAG(in)     (!(in) || \
-       (((struct inode *)in)->i_sb && \
-       (((struct inode *)in)->i_sb->s_flags & MS_TAGXID)))
+
+#define XID_TAG(in)    (IS_TAGXID(in))
+
+
+#ifdef CONFIG_XID_TAG_NFSD
+#define XID_TAG_NFSD   1
+#else
+#define XID_TAG_NFSD   0
+#endif
 
 
 #ifdef CONFIG_INOXID_NONE
@@ -57,7 +64,7 @@
 #define MAX_GID                0xFFFFFFFF
 
 #define INOXID_XID(tag, uid, gid, xid) \
-       ((tag) ? ((uid) >> 16) & 0xFFFF) : 0)
+       ((tag) ? (((uid) >> 16) & 0xFFFF) : 0)
 
 #define XIDINO_UID(tag, uid, xid)      \
        ((tag) ? (((uid) & 0xFFFF) | ((xid) << 16)) : (uid))
 #endif
 
 
+#ifndef CONFIG_INOXID_NONE
+#define vx_current_fsxid(sb)   \
+       ((sb)->s_flags & MS_TAGXID ? current->xid : 0)
+#else
+#define vx_current_fsxid(sb)   (0)
+#endif
+
+#ifndef CONFIG_INOXID_INTERN
+#define XIDINO_XID(tag, xid)   (0)
+#else
+#define XIDINO_XID(tag, xid)   ((tag) ? (xid) : 0)
+#endif
+
 #define INOXID_UID(tag, uid, gid)      \
        ((tag) ? ((uid) & MAX_UID) : (uid))
 #define INOXID_GID(tag, uid, gid)      \
@@ -114,10 +134,13 @@ static inline gid_t vx_map_gid(gid_t gid)
 }
 
 
-#ifdef CONFIG_VSERVER_LEGACY           
+#ifdef CONFIG_VSERVER_LEGACY
 #define FIOC_GETXID    _IOR('x', 1, long)
 #define FIOC_SETXID    _IOW('x', 2, long)
 #define FIOC_SETXIDJ   _IOW('x', 3, long)
 #endif
 
+int vx_parse_xid(char *string, xid_t *xid, int remove);
+void vx_propagate_xid(struct nameidata *nd, struct inode *inode);
+
 #endif /* _VX_XID_H */