X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Finclude%2Flustre_compat.h;h=158bbb3c38d6448b30a5d448d3cd38dbde5c9a6a;hp=2e41ef443044794a4baa54c94dd1f17b07add0e3;hb=da028f98ea11943ca15ea9ba7220cc24dbc775bd;hpb=fff1163fdb41190b59adb8d90919e0adf37f68fb diff --git a/lustre/include/lustre_compat.h b/lustre/include/lustre_compat.h index 2e41ef4..158bbb3 100644 --- a/lustre/include/lustre_compat.h +++ b/lustre/include/lustre_compat.h @@ -40,6 +40,7 @@ #include #include #include +#include #include #include @@ -392,6 +393,16 @@ static inline void truncate_inode_pages_final(struct address_space *map) } #endif +#ifndef HAVE_PTR_ERR_OR_ZERO +static inline int __must_check PTR_ERR_OR_ZERO(__force const void *ptr) +{ + if (IS_ERR(ptr)) + return PTR_ERR(ptr); + else + return 0; +} +#endif + #ifndef SIZE_MAX #define SIZE_MAX (~(size_t)0) #endif @@ -458,37 +469,30 @@ int ll_removexattr(struct dentry *dentry, const char *name); #ifndef HAVE_VFS_SETXATTR const struct xattr_handler *get_xattr_type(const char *name); -#ifdef HAVE_XATTR_HANDLER_FLAGS static inline int __vfs_setxattr(struct dentry *dentry, struct inode *inode, const char *name, const void *value, size_t size, int flags) { +# ifdef HAVE_XATTR_HANDLER_FLAGS const struct xattr_handler *handler; int rc; handler = get_xattr_type(name); if (!handler) - return -ENXIO; - -#if defined(HAVE_XATTR_HANDLER_INODE_PARAM) - rc = handler->set(handler, dentry, inode, name, value, size, - XATTR_CREATE); -#elif defined(HAVE_XATTR_HANDLER_SIMPLIFIED) - rc = handler->set(handler, dentry, name, value, size, XATTR_CREATE); -#else - rc = handler->set(dentry, name, value, size, XATTR_CREATE, - handler->flags); -#endif /* !HAVE_XATTR_HANDLER_INODE_PARAM */ + return -EOPNOTSUPP; + +# if defined(HAVE_XATTR_HANDLER_INODE_PARAM) + rc = handler->set(handler, dentry, inode, name, value, size, flags); +# elif defined(HAVE_XATTR_HANDLER_SIMPLIFIED) + rc = handler->set(handler, dentry, name, value, size, flags); +# else + rc = handler->set(dentry, name, value, size, flags, handler->flags); +# endif /* !HAVE_XATTR_HANDLER_INODE_PARAM */ return rc; -} -#else /* !HAVE_XATTR_HANDLER_FLAGS */ -static inline int -__vfs_setxattr(struct dentry *dentry, struct inode *inode, const char *name, - const void *value, size_t size, int flags) -{ +# else /* !HAVE_XATTR_HANDLER_FLAGS */ return ll_setxattr(dentry, name, value, size, flags); +# endif /* HAVE_XATTR_HANDLER_FLAGS */ } -#endif /* HAVE_XATTR_HANDLER_FLAGS */ #endif /* HAVE_VFS_SETXATTR */ #ifdef HAVE_IOP_SET_ACL @@ -678,6 +682,19 @@ static inline struct timespec current_time(struct inode *inode) */ #define time_after32(a, b) ((s32)((u32)(b) - (u32)(a)) < 0) #define time_before32(b, a) time_after32(a, b) + +#endif + +#ifndef __GFP_COLD +#define __GFP_COLD 0 +#endif + +#ifndef alloc_workqueue +#define alloc_workqueue(name, flags, max_active) create_workqueue(name) +#endif + +#ifndef READ_ONCE +#define READ_ONCE ACCESS_ONCE #endif #endif /* _LUSTRE_COMPAT_H */