Commit 0be19afa authored by Ann Koehler's avatar Ann Koehler Committed by Greg Kroah-Hartman

staging/lustre: restore __GFP_WAIT flag to memalloc calls

In Lustre 2.4, the flags passed to the memory allocation functions are
translated from CFS enumeration values types to the kernel GFP
values by calling cfs_alloc_flags_to_gfp(). This function adds
__GFP_WAIT to all flags except CFS_ALLOC_ATOMIC. In 2.5, when
the cfs wrappers were dropped, cfs_alloc_flags_to_gfp() was
removed and the CFS_ALLOC_xxxx was simply replaced with __GFP_xxxx.
This means that most memory allocation calls are missing the
__GFP_WAIT flag. The result is that Lustre experiences more ENOMEM
errors, many of which the higher levels of Lustre do not handle
robustly.
Notes GFP_NOFS = __GFP_WAIT | __GFP_IO. So the patch replaces
__GFP_IO with GFP_NOFS.
Patch does not add __GFP_WAIT to GFP_IOFS. GFP_IOFS was not used in
Lustre 2.4 so it has never been used with __GFP_WAIT.
Signed-off-by: default avatarAnn Koehler <amk@cray.com>
Signed-off-by: default avatarEmoly Liu <emoly.liu@intel.com>
Reviewed-on: http://review.whamcloud.com/9223
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-4357Reviewed-by: default avatarLiang Zhen <liang.zhen@intel.com>
Reviewed-by: default avatarJames Simmons <uja.ornl@gmail.com>
Reviewed-by: default avatarAndreas Dilger <andreas.dilger@intel.com>
Signed-off-by: default avatarOleg Drokin <oleg.drokin@intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 35b2e1b7
...@@ -153,7 +153,7 @@ do { \ ...@@ -153,7 +153,7 @@ do { \
* default allocator * default allocator
*/ */
#define LIBCFS_ALLOC(ptr, size) \ #define LIBCFS_ALLOC(ptr, size) \
LIBCFS_ALLOC_GFP(ptr, size, __GFP_IO) LIBCFS_ALLOC_GFP(ptr, size, GFP_NOFS)
/** /**
* non-sleeping allocator * non-sleeping allocator
...@@ -177,7 +177,7 @@ do { \ ...@@ -177,7 +177,7 @@ do { \
/** default numa allocator */ /** default numa allocator */
#define LIBCFS_CPT_ALLOC(ptr, cptab, cpt, size) \ #define LIBCFS_CPT_ALLOC(ptr, cptab, cpt, size) \
LIBCFS_CPT_ALLOC_GFP(ptr, cptab, cpt, size, __GFP_IO) LIBCFS_CPT_ALLOC_GFP(ptr, cptab, cpt, size, GFP_NOFS)
#define LIBCFS_FREE(ptr, size) \ #define LIBCFS_FREE(ptr, size) \
do { \ do { \
......
...@@ -1141,7 +1141,7 @@ kiblnd_alloc_pages(kib_pages_t **pp, int cpt, int npages) ...@@ -1141,7 +1141,7 @@ kiblnd_alloc_pages(kib_pages_t **pp, int cpt, int npages)
for (i = 0; i < npages; i++) { for (i = 0; i < npages; i++) {
p->ibp_pages[i] = alloc_pages_node( p->ibp_pages[i] = alloc_pages_node(
cfs_cpt_spread_node(lnet_cpt_table(), cpt), cfs_cpt_spread_node(lnet_cpt_table(), cpt),
__GFP_IO, 0); GFP_NOFS, 0);
if (p->ibp_pages[i] == NULL) { if (p->ibp_pages[i] == NULL) {
CERROR("Can't allocate page %d of %d\n", i, npages); CERROR("Can't allocate page %d of %d\n", i, npages);
kiblnd_free_pages(p); kiblnd_free_pages(p);
......
...@@ -2133,7 +2133,7 @@ extern struct kmem_cache *obdo_cachep; ...@@ -2133,7 +2133,7 @@ extern struct kmem_cache *obdo_cachep;
#define OBDO_ALLOC(ptr) \ #define OBDO_ALLOC(ptr) \
do { \ do { \
OBD_SLAB_ALLOC_PTR_GFP((ptr), obdo_cachep, __GFP_IO); \ OBD_SLAB_ALLOC_PTR_GFP((ptr), obdo_cachep, GFP_NOFS); \
} while(0) } while(0)
#define OBDO_FREE(ptr) \ #define OBDO_FREE(ptr) \
......
...@@ -641,8 +641,8 @@ do { \ ...@@ -641,8 +641,8 @@ do { \
#define OBD_ALLOC_GFP(ptr, size, gfp_mask) \ #define OBD_ALLOC_GFP(ptr, size, gfp_mask) \
__OBD_MALLOC_VERBOSE(ptr, NULL, 0, size, gfp_mask) __OBD_MALLOC_VERBOSE(ptr, NULL, 0, size, gfp_mask)
#define OBD_ALLOC(ptr, size) OBD_ALLOC_GFP(ptr, size, __GFP_IO) #define OBD_ALLOC(ptr, size) OBD_ALLOC_GFP(ptr, size, GFP_NOFS)
#define OBD_ALLOC_WAIT(ptr, size) OBD_ALLOC_GFP(ptr, size, GFP_IOFS) #define OBD_ALLOC_WAIT(ptr, size) OBD_ALLOC_GFP(ptr, size, GFP_KERNEL)
#define OBD_ALLOC_PTR(ptr) OBD_ALLOC(ptr, sizeof(*(ptr))) #define OBD_ALLOC_PTR(ptr) OBD_ALLOC(ptr, sizeof(*(ptr)))
#define OBD_ALLOC_PTR_WAIT(ptr) OBD_ALLOC_WAIT(ptr, sizeof(*(ptr))) #define OBD_ALLOC_PTR_WAIT(ptr) OBD_ALLOC_WAIT(ptr, sizeof(*(ptr)))
...@@ -650,7 +650,7 @@ do { \ ...@@ -650,7 +650,7 @@ do { \
__OBD_MALLOC_VERBOSE(ptr, cptab, cpt, size, gfp_mask) __OBD_MALLOC_VERBOSE(ptr, cptab, cpt, size, gfp_mask)
#define OBD_CPT_ALLOC(ptr, cptab, cpt, size) \ #define OBD_CPT_ALLOC(ptr, cptab, cpt, size) \
OBD_CPT_ALLOC_GFP(ptr, cptab, cpt, size, __GFP_IO) OBD_CPT_ALLOC_GFP(ptr, cptab, cpt, size, GFP_NOFS)
#define OBD_CPT_ALLOC_PTR(ptr, cptab, cpt) \ #define OBD_CPT_ALLOC_PTR(ptr, cptab, cpt) \
OBD_CPT_ALLOC(ptr, cptab, cpt, sizeof(*(ptr))) OBD_CPT_ALLOC(ptr, cptab, cpt, sizeof(*(ptr)))
...@@ -793,10 +793,10 @@ do { \ ...@@ -793,10 +793,10 @@ do { \
} while(0) } while(0)
#define OBD_SLAB_ALLOC(ptr, slab, size) \ #define OBD_SLAB_ALLOC(ptr, slab, size) \
OBD_SLAB_ALLOC_GFP(ptr, slab, size, __GFP_IO) OBD_SLAB_ALLOC_GFP(ptr, slab, size, GFP_NOFS)
#define OBD_SLAB_CPT_ALLOC(ptr, slab, cptab, cpt, size) \ #define OBD_SLAB_CPT_ALLOC(ptr, slab, cptab, cpt, size) \
OBD_SLAB_CPT_ALLOC_GFP(ptr, slab, cptab, cpt, size, __GFP_IO) OBD_SLAB_CPT_ALLOC_GFP(ptr, slab, cptab, cpt, size, GFP_NOFS)
#define OBD_SLAB_ALLOC_PTR(ptr, slab) \ #define OBD_SLAB_ALLOC_PTR(ptr, slab) \
OBD_SLAB_ALLOC(ptr, slab, sizeof(*(ptr))) OBD_SLAB_ALLOC(ptr, slab, sizeof(*(ptr)))
......
...@@ -112,12 +112,11 @@ static struct lu_kmem_descr ccc_caches[] = { ...@@ -112,12 +112,11 @@ static struct lu_kmem_descr ccc_caches[] = {
* *
*/ */
void *ccc_key_init(const struct lu_context *ctx, void *ccc_key_init(const struct lu_context *ctx, struct lu_context_key *key)
struct lu_context_key *key)
{ {
struct ccc_thread_info *info; struct ccc_thread_info *info;
OBD_SLAB_ALLOC_PTR_GFP(info, ccc_thread_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(info, ccc_thread_kmem, GFP_NOFS);
if (info == NULL) if (info == NULL)
info = ERR_PTR(-ENOMEM); info = ERR_PTR(-ENOMEM);
return info; return info;
...@@ -135,7 +134,7 @@ void *ccc_session_key_init(const struct lu_context *ctx, ...@@ -135,7 +134,7 @@ void *ccc_session_key_init(const struct lu_context *ctx,
{ {
struct ccc_session *session; struct ccc_session *session;
OBD_SLAB_ALLOC_PTR_GFP(session, ccc_session_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(session, ccc_session_kmem, GFP_NOFS);
if (session == NULL) if (session == NULL)
session = ERR_PTR(-ENOMEM); session = ERR_PTR(-ENOMEM);
return session; return session;
...@@ -251,7 +250,7 @@ int ccc_req_init(const struct lu_env *env, struct cl_device *dev, ...@@ -251,7 +250,7 @@ int ccc_req_init(const struct lu_env *env, struct cl_device *dev,
struct ccc_req *vrq; struct ccc_req *vrq;
int result; int result;
OBD_SLAB_ALLOC_PTR_GFP(vrq, ccc_req_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(vrq, ccc_req_kmem, GFP_NOFS);
if (vrq != NULL) { if (vrq != NULL) {
cl_req_slice_add(req, &vrq->crq_cl, dev, &ccc_req_ops); cl_req_slice_add(req, &vrq->crq_cl, dev, &ccc_req_ops);
result = 0; result = 0;
...@@ -327,7 +326,7 @@ struct lu_object *ccc_object_alloc(const struct lu_env *env, ...@@ -327,7 +326,7 @@ struct lu_object *ccc_object_alloc(const struct lu_env *env,
struct ccc_object *vob; struct ccc_object *vob;
struct lu_object *obj; struct lu_object *obj;
OBD_SLAB_ALLOC_PTR_GFP(vob, ccc_object_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(vob, ccc_object_kmem, GFP_NOFS);
if (vob != NULL) { if (vob != NULL) {
struct cl_object_header *hdr; struct cl_object_header *hdr;
...@@ -396,7 +395,7 @@ int ccc_lock_init(const struct lu_env *env, ...@@ -396,7 +395,7 @@ int ccc_lock_init(const struct lu_env *env,
CLOBINVRNT(env, obj, ccc_object_invariant(obj)); CLOBINVRNT(env, obj, ccc_object_invariant(obj));
OBD_SLAB_ALLOC_PTR_GFP(clk, ccc_lock_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(clk, ccc_lock_kmem, GFP_NOFS);
if (clk != NULL) { if (clk != NULL) {
cl_lock_slice_add(lock, &clk->clk_cl, obj, lkops); cl_lock_slice_add(lock, &clk->clk_cl, obj, lkops);
result = 0; result = 0;
......
...@@ -104,7 +104,7 @@ struct ldlm_interval *ldlm_interval_alloc(struct ldlm_lock *lock) ...@@ -104,7 +104,7 @@ struct ldlm_interval *ldlm_interval_alloc(struct ldlm_lock *lock)
struct ldlm_interval *node; struct ldlm_interval *node;
LASSERT(lock->l_resource->lr_type == LDLM_EXTENT); LASSERT(lock->l_resource->lr_type == LDLM_EXTENT);
OBD_SLAB_ALLOC_PTR_GFP(node, ldlm_interval_slab, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(node, ldlm_interval_slab, GFP_NOFS);
if (node == NULL) if (node == NULL)
return NULL; return NULL;
......
...@@ -437,7 +437,7 @@ static struct ldlm_lock *ldlm_lock_new(struct ldlm_resource *resource) ...@@ -437,7 +437,7 @@ static struct ldlm_lock *ldlm_lock_new(struct ldlm_resource *resource)
if (resource == NULL) if (resource == NULL)
LBUG(); LBUG();
OBD_SLAB_ALLOC_PTR_GFP(lock, ldlm_lock_slab, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(lock, ldlm_lock_slab, GFP_NOFS);
if (lock == NULL) if (lock == NULL)
return NULL; return NULL;
...@@ -1624,7 +1624,7 @@ ldlm_error_t ldlm_lock_enqueue(struct ldlm_namespace *ns, ...@@ -1624,7 +1624,7 @@ ldlm_error_t ldlm_lock_enqueue(struct ldlm_namespace *ns,
* have to allocate the interval node early otherwise we can't regrant * have to allocate the interval node early otherwise we can't regrant
* this lock in the future. - jay */ * this lock in the future. - jay */
if (!local && (*flags & LDLM_FL_REPLAY) && res->lr_type == LDLM_EXTENT) if (!local && (*flags & LDLM_FL_REPLAY) && res->lr_type == LDLM_EXTENT)
OBD_SLAB_ALLOC_PTR_GFP(node, ldlm_interval_slab, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(node, ldlm_interval_slab, GFP_NOFS);
lock_res_and_lock(lock); lock_res_and_lock(lock);
if (local && lock->l_req_mode == lock->l_granted_mode) { if (local && lock->l_req_mode == lock->l_granted_mode) {
...@@ -2146,7 +2146,7 @@ struct ldlm_resource *ldlm_lock_convert(struct ldlm_lock *lock, int new_mode, ...@@ -2146,7 +2146,7 @@ struct ldlm_resource *ldlm_lock_convert(struct ldlm_lock *lock, int new_mode,
/* I can't check the type of lock here because the bitlock of lock /* I can't check the type of lock here because the bitlock of lock
* is not held here, so do the allocation blindly. -jay */ * is not held here, so do the allocation blindly. -jay */
OBD_SLAB_ALLOC_PTR_GFP(node, ldlm_interval_slab, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(node, ldlm_interval_slab, GFP_NOFS);
if (node == NULL) if (node == NULL)
/* Actually, this causes EDEADLOCK to be returned */ /* Actually, this causes EDEADLOCK to be returned */
return NULL; return NULL;
......
...@@ -1014,7 +1014,7 @@ static struct ldlm_resource *ldlm_resource_new(void) ...@@ -1014,7 +1014,7 @@ static struct ldlm_resource *ldlm_resource_new(void)
struct ldlm_resource *res; struct ldlm_resource *res;
int idx; int idx;
OBD_SLAB_ALLOC_PTR_GFP(res, ldlm_resource_slab, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(res, ldlm_resource_slab, GFP_NOFS);
if (res == NULL) if (res == NULL)
return NULL; return NULL;
......
...@@ -54,7 +54,7 @@ struct ll_file_data *ll_file_data_get(void) ...@@ -54,7 +54,7 @@ struct ll_file_data *ll_file_data_get(void)
{ {
struct ll_file_data *fd; struct ll_file_data *fd;
OBD_SLAB_ALLOC_PTR_GFP(fd, ll_file_data_slab, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(fd, ll_file_data_slab, GFP_NOFS);
if (fd == NULL) if (fd == NULL)
return NULL; return NULL;
fd->fd_write_failed = false; fd->fd_write_failed = false;
......
...@@ -52,7 +52,7 @@ static struct inode *ll_alloc_inode(struct super_block *sb) ...@@ -52,7 +52,7 @@ static struct inode *ll_alloc_inode(struct super_block *sb)
{ {
struct ll_inode_info *lli; struct ll_inode_info *lli;
ll_stats_ops_tally(ll_s2sbi(sb), LPROC_LL_ALLOC_INODE, 1); ll_stats_ops_tally(ll_s2sbi(sb), LPROC_LL_ALLOC_INODE, 1);
OBD_SLAB_ALLOC_PTR_GFP(lli, ll_inode_cachep, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(lli, ll_inode_cachep, GFP_NOFS);
if (lli == NULL) if (lli == NULL)
return NULL; return NULL;
......
...@@ -80,7 +80,7 @@ static void *vvp_key_init(const struct lu_context *ctx, ...@@ -80,7 +80,7 @@ static void *vvp_key_init(const struct lu_context *ctx,
{ {
struct vvp_thread_info *info; struct vvp_thread_info *info;
OBD_SLAB_ALLOC_PTR_GFP(info, vvp_thread_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(info, vvp_thread_kmem, GFP_NOFS);
if (info == NULL) if (info == NULL)
info = ERR_PTR(-ENOMEM); info = ERR_PTR(-ENOMEM);
return info; return info;
...@@ -98,7 +98,7 @@ static void *vvp_session_key_init(const struct lu_context *ctx, ...@@ -98,7 +98,7 @@ static void *vvp_session_key_init(const struct lu_context *ctx,
{ {
struct vvp_session *session; struct vvp_session *session;
OBD_SLAB_ALLOC_PTR_GFP(session, vvp_session_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(session, vvp_session_kmem, GFP_NOFS);
if (session == NULL) if (session == NULL)
session = ERR_PTR(-ENOMEM); session = ERR_PTR(-ENOMEM);
return session; return session;
......
...@@ -120,7 +120,7 @@ static int ll_xattr_cache_add(struct list_head *cache, ...@@ -120,7 +120,7 @@ static int ll_xattr_cache_add(struct list_head *cache,
return -EPROTO; return -EPROTO;
} }
OBD_SLAB_ALLOC_PTR_GFP(xattr, xattr_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(xattr, xattr_kmem, GFP_NOFS);
if (xattr == NULL) { if (xattr == NULL) {
CDEBUG(D_CACHE, "failed to allocate xattr\n"); CDEBUG(D_CACHE, "failed to allocate xattr\n");
return -ENOMEM; return -ENOMEM;
......
...@@ -143,7 +143,7 @@ static void *lov_key_init(const struct lu_context *ctx, ...@@ -143,7 +143,7 @@ static void *lov_key_init(const struct lu_context *ctx,
{ {
struct lov_thread_info *info; struct lov_thread_info *info;
OBD_SLAB_ALLOC_PTR_GFP(info, lov_thread_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(info, lov_thread_kmem, GFP_NOFS);
if (info != NULL) if (info != NULL)
INIT_LIST_HEAD(&info->lti_closure.clc_list); INIT_LIST_HEAD(&info->lti_closure.clc_list);
else else
...@@ -170,7 +170,7 @@ static void *lov_session_key_init(const struct lu_context *ctx, ...@@ -170,7 +170,7 @@ static void *lov_session_key_init(const struct lu_context *ctx,
{ {
struct lov_session *info; struct lov_session *info;
OBD_SLAB_ALLOC_PTR_GFP(info, lov_session_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(info, lov_session_kmem, GFP_NOFS);
if (info == NULL) if (info == NULL)
info = ERR_PTR(-ENOMEM); info = ERR_PTR(-ENOMEM);
return info; return info;
...@@ -260,7 +260,7 @@ static int lov_req_init(const struct lu_env *env, struct cl_device *dev, ...@@ -260,7 +260,7 @@ static int lov_req_init(const struct lu_env *env, struct cl_device *dev,
struct lov_req *lr; struct lov_req *lr;
int result; int result;
OBD_SLAB_ALLOC_PTR_GFP(lr, lov_req_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(lr, lov_req_kmem, GFP_NOFS);
if (lr != NULL) { if (lr != NULL) {
cl_req_slice_add(req, &lr->lr_cl, dev, &lov_req_ops); cl_req_slice_add(req, &lr->lr_cl, dev, &lov_req_ops);
result = 0; result = 0;
......
...@@ -101,7 +101,7 @@ struct lov_stripe_md *lsm_alloc_plain(__u16 stripe_count, int *size) ...@@ -101,7 +101,7 @@ struct lov_stripe_md *lsm_alloc_plain(__u16 stripe_count, int *size)
return NULL; return NULL;
for (i = 0; i < stripe_count; i++) { for (i = 0; i < stripe_count; i++) {
OBD_SLAB_ALLOC_PTR_GFP(loi, lov_oinfo_slab, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(loi, lov_oinfo_slab, GFP_NOFS);
if (loi == NULL) if (loi == NULL)
goto err; goto err;
lsm->lsm_oinfo[i] = loi; lsm->lsm_oinfo[i] = loi;
......
...@@ -144,7 +144,7 @@ static struct cl_lock *lov_sublock_alloc(const struct lu_env *env, ...@@ -144,7 +144,7 @@ static struct cl_lock *lov_sublock_alloc(const struct lu_env *env,
LASSERT(idx < lck->lls_nr); LASSERT(idx < lck->lls_nr);
OBD_SLAB_ALLOC_PTR_GFP(link, lov_lock_link_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(link, lov_lock_link_kmem, GFP_NOFS);
if (link != NULL) { if (link != NULL) {
struct lov_sublock_env *subenv; struct lov_sublock_env *subenv;
struct lov_lock_sub *lls; struct lov_lock_sub *lls;
...@@ -1159,7 +1159,7 @@ int lov_lock_init_raid0(const struct lu_env *env, struct cl_object *obj, ...@@ -1159,7 +1159,7 @@ int lov_lock_init_raid0(const struct lu_env *env, struct cl_object *obj,
struct lov_lock *lck; struct lov_lock *lck;
int result; int result;
OBD_SLAB_ALLOC_PTR_GFP(lck, lov_lock_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(lck, lov_lock_kmem, GFP_NOFS);
if (lck != NULL) { if (lck != NULL) {
cl_lock_slice_add(lock, &lck->lls_cl, obj, &lov_lock_ops); cl_lock_slice_add(lock, &lck->lls_cl, obj, &lov_lock_ops);
result = lov_lock_sub_init(env, lck, io); result = lov_lock_sub_init(env, lck, io);
...@@ -1194,7 +1194,7 @@ int lov_lock_init_empty(const struct lu_env *env, struct cl_object *obj, ...@@ -1194,7 +1194,7 @@ int lov_lock_init_empty(const struct lu_env *env, struct cl_object *obj,
struct lov_lock *lck; struct lov_lock *lck;
int result = -ENOMEM; int result = -ENOMEM;
OBD_SLAB_ALLOC_PTR_GFP(lck, lov_lock_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(lck, lov_lock_kmem, GFP_NOFS);
if (lck != NULL) { if (lck != NULL) {
cl_lock_slice_add(lock, &lck->lls_cl, obj, &lov_empty_lock_ops); cl_lock_slice_add(lock, &lck->lls_cl, obj, &lov_empty_lock_ops);
lck->lls_orig = lock->cll_descr; lck->lls_orig = lock->cll_descr;
......
...@@ -885,7 +885,7 @@ struct lu_object *lov_object_alloc(const struct lu_env *env, ...@@ -885,7 +885,7 @@ struct lu_object *lov_object_alloc(const struct lu_env *env,
struct lov_object *lov; struct lov_object *lov;
struct lu_object *obj; struct lu_object *obj;
OBD_SLAB_ALLOC_PTR_GFP(lov, lov_object_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(lov, lov_object_kmem, GFP_NOFS);
if (lov != NULL) { if (lov != NULL) {
obj = lov2lu(lov); obj = lov2lu(lov);
lu_object_init(obj, NULL, dev); lu_object_init(obj, NULL, dev);
......
...@@ -146,7 +146,7 @@ static int lovsub_req_init(const struct lu_env *env, struct cl_device *dev, ...@@ -146,7 +146,7 @@ static int lovsub_req_init(const struct lu_env *env, struct cl_device *dev,
struct lovsub_req *lsr; struct lovsub_req *lsr;
int result; int result;
OBD_SLAB_ALLOC_PTR_GFP(lsr, lovsub_req_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(lsr, lovsub_req_kmem, GFP_NOFS);
if (lsr != NULL) { if (lsr != NULL) {
cl_req_slice_add(req, &lsr->lsrq_cl, dev, &lovsub_req_ops); cl_req_slice_add(req, &lsr->lsrq_cl, dev, &lovsub_req_ops);
result = 0; result = 0;
......
...@@ -453,7 +453,7 @@ int lovsub_lock_init(const struct lu_env *env, struct cl_object *obj, ...@@ -453,7 +453,7 @@ int lovsub_lock_init(const struct lu_env *env, struct cl_object *obj,
struct lovsub_lock *lsk; struct lovsub_lock *lsk;
int result; int result;
OBD_SLAB_ALLOC_PTR_GFP(lsk, lovsub_lock_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(lsk, lovsub_lock_kmem, GFP_NOFS);
if (lsk != NULL) { if (lsk != NULL) {
INIT_LIST_HEAD(&lsk->lss_parents); INIT_LIST_HEAD(&lsk->lss_parents);
cl_lock_slice_add(lock, &lsk->lss_cl, obj, &lovsub_lock_ops); cl_lock_slice_add(lock, &lsk->lss_cl, obj, &lovsub_lock_ops);
......
...@@ -145,7 +145,7 @@ struct lu_object *lovsub_object_alloc(const struct lu_env *env, ...@@ -145,7 +145,7 @@ struct lu_object *lovsub_object_alloc(const struct lu_env *env,
struct lovsub_object *los; struct lovsub_object *los;
struct lu_object *obj; struct lu_object *obj;
OBD_SLAB_ALLOC_PTR_GFP(los, lovsub_object_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(los, lovsub_object_kmem, GFP_NOFS);
if (los != NULL) { if (los != NULL) {
struct cl_object_header *hdr; struct cl_object_header *hdr;
......
...@@ -360,7 +360,7 @@ static struct cl_lock *cl_lock_alloc(const struct lu_env *env, ...@@ -360,7 +360,7 @@ static struct cl_lock *cl_lock_alloc(const struct lu_env *env,
struct cl_lock *lock; struct cl_lock *lock;
struct lu_object_header *head; struct lu_object_header *head;
OBD_SLAB_ALLOC_PTR_GFP(lock, cl_lock_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(lock, cl_lock_kmem, GFP_NOFS);
if (lock != NULL) { if (lock != NULL) {
atomic_set(&lock->cll_ref, 1); atomic_set(&lock->cll_ref, 1);
lock->cll_descr = *descr; lock->cll_descr = *descr;
......
...@@ -684,7 +684,7 @@ static struct lu_env *cl_env_new(__u32 ctx_tags, __u32 ses_tags, void *debug) ...@@ -684,7 +684,7 @@ static struct lu_env *cl_env_new(__u32 ctx_tags, __u32 ses_tags, void *debug)
struct lu_env *env; struct lu_env *env;
struct cl_env *cle; struct cl_env *cle;
OBD_SLAB_ALLOC_PTR_GFP(cle, cl_env_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(cle, cl_env_kmem, GFP_NOFS);
if (cle != NULL) { if (cle != NULL) {
int rc; int rc;
......
...@@ -292,7 +292,7 @@ static struct cl_page *cl_page_alloc(const struct lu_env *env, ...@@ -292,7 +292,7 @@ static struct cl_page *cl_page_alloc(const struct lu_env *env,
struct lu_object_header *head; struct lu_object_header *head;
OBD_ALLOC_GFP(page, cl_object_header(o)->coh_page_bufsize, OBD_ALLOC_GFP(page, cl_object_header(o)->coh_page_bufsize,
__GFP_IO); GFP_NOFS);
if (page != NULL) { if (page != NULL) {
int result = 0; int result = 0;
atomic_set(&page->cp_ref, 1); atomic_set(&page->cp_ref, 1);
......
...@@ -72,7 +72,7 @@ static struct obd_device *obd_device_alloc(void) ...@@ -72,7 +72,7 @@ static struct obd_device *obd_device_alloc(void)
{ {
struct obd_device *obd; struct obd_device *obd;
OBD_SLAB_ALLOC_PTR_GFP(obd, obd_device_cachep, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(obd, obd_device_cachep, GFP_NOFS);
if (obd != NULL) { if (obd != NULL) {
obd->obd_magic = OBD_DEVICE_MAGIC; obd->obd_magic = OBD_DEVICE_MAGIC;
} }
......
...@@ -428,7 +428,7 @@ static int echo_lock_init(const struct lu_env *env, ...@@ -428,7 +428,7 @@ static int echo_lock_init(const struct lu_env *env,
{ {
struct echo_lock *el; struct echo_lock *el;
OBD_SLAB_ALLOC_PTR_GFP(el, echo_lock_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(el, echo_lock_kmem, GFP_NOFS);
if (el != NULL) { if (el != NULL) {
cl_lock_slice_add(lock, &el->el_cl, obj, &echo_lock_ops); cl_lock_slice_add(lock, &el->el_cl, obj, &echo_lock_ops);
el->el_object = cl2echo_obj(obj); el->el_object = cl2echo_obj(obj);
...@@ -599,7 +599,7 @@ static struct lu_object *echo_object_alloc(const struct lu_env *env, ...@@ -599,7 +599,7 @@ static struct lu_object *echo_object_alloc(const struct lu_env *env,
/* we're the top dev. */ /* we're the top dev. */
LASSERT(hdr == NULL); LASSERT(hdr == NULL);
OBD_SLAB_ALLOC_PTR_GFP(eco, echo_object_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(eco, echo_object_kmem, GFP_NOFS);
if (eco != NULL) { if (eco != NULL) {
struct cl_object_header *hdr = &eco->eo_hdr; struct cl_object_header *hdr = &eco->eo_hdr;
...@@ -663,7 +663,7 @@ static void *echo_thread_key_init(const struct lu_context *ctx, ...@@ -663,7 +663,7 @@ static void *echo_thread_key_init(const struct lu_context *ctx,
{ {
struct echo_thread_info *info; struct echo_thread_info *info;
OBD_SLAB_ALLOC_PTR_GFP(info, echo_thread_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(info, echo_thread_kmem, GFP_NOFS);
if (info == NULL) if (info == NULL)
info = ERR_PTR(-ENOMEM); info = ERR_PTR(-ENOMEM);
return info; return info;
...@@ -693,7 +693,7 @@ static void *echo_session_key_init(const struct lu_context *ctx, ...@@ -693,7 +693,7 @@ static void *echo_session_key_init(const struct lu_context *ctx,
{ {
struct echo_session_info *session; struct echo_session_info *session;
OBD_SLAB_ALLOC_PTR_GFP(session, echo_session_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(session, echo_session_kmem, GFP_NOFS);
if (session == NULL) if (session == NULL)
session = ERR_PTR(-ENOMEM); session = ERR_PTR(-ENOMEM);
return session; return session;
......
...@@ -122,7 +122,7 @@ static void *osc_key_init(const struct lu_context *ctx, ...@@ -122,7 +122,7 @@ static void *osc_key_init(const struct lu_context *ctx,
{ {
struct osc_thread_info *info; struct osc_thread_info *info;
OBD_SLAB_ALLOC_PTR_GFP(info, osc_thread_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(info, osc_thread_kmem, GFP_NOFS);
if (info == NULL) if (info == NULL)
info = ERR_PTR(-ENOMEM); info = ERR_PTR(-ENOMEM);
return info; return info;
...@@ -146,7 +146,7 @@ static void *osc_session_init(const struct lu_context *ctx, ...@@ -146,7 +146,7 @@ static void *osc_session_init(const struct lu_context *ctx,
{ {
struct osc_session *info; struct osc_session *info;
OBD_SLAB_ALLOC_PTR_GFP(info, osc_session_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(info, osc_session_kmem, GFP_NOFS);
if (info == NULL) if (info == NULL)
info = ERR_PTR(-ENOMEM); info = ERR_PTR(-ENOMEM);
return info; return info;
......
...@@ -812,7 +812,7 @@ int osc_req_init(const struct lu_env *env, struct cl_device *dev, ...@@ -812,7 +812,7 @@ int osc_req_init(const struct lu_env *env, struct cl_device *dev,
struct osc_req *or; struct osc_req *or;
int result; int result;
OBD_SLAB_ALLOC_PTR_GFP(or, osc_req_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(or, osc_req_kmem, GFP_NOFS);
if (or != NULL) { if (or != NULL) {
cl_req_slice_add(req, &or->or_cl, dev, &osc_req_ops); cl_req_slice_add(req, &or->or_cl, dev, &osc_req_ops);
result = 0; result = 0;
......
...@@ -1559,7 +1559,7 @@ int osc_lock_init(const struct lu_env *env, ...@@ -1559,7 +1559,7 @@ int osc_lock_init(const struct lu_env *env,
struct osc_lock *clk; struct osc_lock *clk;
int result; int result;
OBD_SLAB_ALLOC_PTR_GFP(clk, osc_lock_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(clk, osc_lock_kmem, GFP_NOFS);
if (clk != NULL) { if (clk != NULL) {
__u32 enqflags = lock->cll_descr.cld_enq_flags; __u32 enqflags = lock->cll_descr.cld_enq_flags;
......
...@@ -260,7 +260,7 @@ struct lu_object *osc_object_alloc(const struct lu_env *env, ...@@ -260,7 +260,7 @@ struct lu_object *osc_object_alloc(const struct lu_env *env,
struct osc_object *osc; struct osc_object *osc;
struct lu_object *obj; struct lu_object *obj;
OBD_SLAB_ALLOC_PTR_GFP(osc, osc_object_kmem, __GFP_IO); OBD_SLAB_ALLOC_PTR_GFP(osc, osc_object_kmem, GFP_NOFS);
if (osc != NULL) { if (osc != NULL) {
obj = osc2lu(osc); obj = osc2lu(osc);
lu_object_init(obj, NULL, dev); lu_object_init(obj, NULL, dev);
......
...@@ -455,7 +455,7 @@ void ptlrpc_add_rqs_to_pool(struct ptlrpc_request_pool *pool, int num_rq) ...@@ -455,7 +455,7 @@ void ptlrpc_add_rqs_to_pool(struct ptlrpc_request_pool *pool, int num_rq)
struct lustre_msg *msg; struct lustre_msg *msg;
spin_unlock(&pool->prp_lock); spin_unlock(&pool->prp_lock);
req = ptlrpc_request_cache_alloc(__GFP_IO); req = ptlrpc_request_cache_alloc(GFP_NOFS);
if (!req) if (!req)
return; return;
OBD_ALLOC_LARGE(msg, size); OBD_ALLOC_LARGE(msg, size);
...@@ -696,7 +696,7 @@ struct ptlrpc_request *__ptlrpc_request_alloc(struct obd_import *imp, ...@@ -696,7 +696,7 @@ struct ptlrpc_request *__ptlrpc_request_alloc(struct obd_import *imp,
request = ptlrpc_prep_req_from_pool(pool); request = ptlrpc_prep_req_from_pool(pool);
if (!request) if (!request)
request = ptlrpc_request_cache_alloc(__GFP_IO); request = ptlrpc_request_cache_alloc(GFP_NOFS);
if (request) { if (request) {
LASSERTF((unsigned long)imp > 0x1000, "%p", imp); LASSERTF((unsigned long)imp > 0x1000, "%p", imp);
...@@ -3051,7 +3051,7 @@ void *ptlrpcd_alloc_work(struct obd_import *imp, ...@@ -3051,7 +3051,7 @@ void *ptlrpcd_alloc_work(struct obd_import *imp,
return ERR_PTR(-EINVAL); return ERR_PTR(-EINVAL);
/* copy some code from deprecated fakereq. */ /* copy some code from deprecated fakereq. */
req = ptlrpc_request_cache_alloc(__GFP_IO); req = ptlrpc_request_cache_alloc(GFP_NOFS);
if (req == NULL) { if (req == NULL) {
CERROR("ptlrpc: run out of memory!\n"); CERROR("ptlrpc: run out of memory!\n");
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
......
...@@ -746,7 +746,7 @@ static int nrs_policy_register(struct ptlrpc_nrs *nrs, ...@@ -746,7 +746,7 @@ static int nrs_policy_register(struct ptlrpc_nrs *nrs,
LASSERT(desc->pd_compat != NULL); LASSERT(desc->pd_compat != NULL);
OBD_CPT_ALLOC_GFP(policy, svcpt->scp_service->srv_cptable, OBD_CPT_ALLOC_GFP(policy, svcpt->scp_service->srv_cptable,
svcpt->scp_cpt, sizeof(*policy), __GFP_IO); svcpt->scp_cpt, sizeof(*policy), GFP_NOFS);
if (policy == NULL) if (policy == NULL)
return -ENOMEM; return -ENOMEM;
......
...@@ -904,7 +904,7 @@ int sptlrpc_import_check_ctx(struct obd_import *imp) ...@@ -904,7 +904,7 @@ int sptlrpc_import_check_ctx(struct obd_import *imp)
return -EACCES; return -EACCES;
} }
req = ptlrpc_request_cache_alloc(__GFP_IO); req = ptlrpc_request_cache_alloc(GFP_NOFS);
if (!req) if (!req)
return -ENOMEM; return -ENOMEM;
...@@ -1088,7 +1088,7 @@ int sptlrpc_cli_unwrap_early_reply(struct ptlrpc_request *req, ...@@ -1088,7 +1088,7 @@ int sptlrpc_cli_unwrap_early_reply(struct ptlrpc_request *req,
int early_bufsz, early_size; int early_bufsz, early_size;
int rc; int rc;
early_req = ptlrpc_request_cache_alloc(__GFP_IO); early_req = ptlrpc_request_cache_alloc(GFP_NOFS);
if (early_req == NULL) if (early_req == NULL)
return -ENOMEM; return -ENOMEM;
......
...@@ -421,7 +421,7 @@ static int enc_pools_add_pages(int npages) ...@@ -421,7 +421,7 @@ static int enc_pools_add_pages(int npages)
goto out_pools; goto out_pools;
for (j = 0; j < PAGES_PER_POOL && alloced < npages; j++) { for (j = 0; j < PAGES_PER_POOL && alloced < npages; j++) {
pools[i][j] = alloc_page(__GFP_IO | pools[i][j] = alloc_page(GFP_NOFS |
__GFP_HIGHMEM); __GFP_HIGHMEM);
if (pools[i][j] == NULL) if (pools[i][j] == NULL)
goto out_pools; goto out_pools;
......
...@@ -1305,7 +1305,7 @@ static int ptlrpc_at_send_early_reply(struct ptlrpc_request *req) ...@@ -1305,7 +1305,7 @@ static int ptlrpc_at_send_early_reply(struct ptlrpc_request *req)
} }
newdl = cfs_time_current_sec() + at_get(&svcpt->scp_at_estimate); newdl = cfs_time_current_sec() + at_get(&svcpt->scp_at_estimate);
reqcopy = ptlrpc_request_cache_alloc(__GFP_IO); reqcopy = ptlrpc_request_cache_alloc(GFP_NOFS);
if (reqcopy == NULL) if (reqcopy == NULL)
return -ENOMEM; return -ENOMEM;
OBD_ALLOC_LARGE(reqmsg, req->rq_reqlen); OBD_ALLOC_LARGE(reqmsg, req->rq_reqlen);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment