X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Flinux%2Fvserver%2Fxid.h;h=2e4349eb2784a90a916cd79c834f1589d5f59bb8;hb=43bc926fffd92024b46cafaf7350d669ba9ca884;hp=3472defa59967145ffd927c1b44f014b78dd80b2;hpb=9bf4aaab3e101692164d49b7ca357651eb691cb6;p=linux-2.6.git diff --git a/include/linux/vserver/xid.h b/include/linux/vserver/xid.h index 3472defa5..2e4349eb2 100644 --- a/include/linux/vserver/xid.h +++ b/include/linux/vserver/xid.h @@ -1,10 +1,17 @@ #ifndef _VX_XID_H #define _VX_XID_H +#include -#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)) @@ -93,6 +100,19 @@ #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 */