[PATCH 18/30] staging: lustre: replace memory_presure funcitons by standard interfaces.

2018-05-20 Thread NeilBrown
Use memalloc_noreclaim_save() and memalloc_noreclaim_restore(),
and for testing, just directly test the flag in current->flags

Signed-off-by: NeilBrown 
---
 .../lustre/include/linux/libcfs/libcfs_prim.h  |   31 
 .../staging/lustre/lnet/klnds/socklnd/socklnd_cb.c |   11 ---
 drivers/staging/lustre/lnet/libcfs/tracefile.c |5 ++-
 drivers/staging/lustre/lnet/lnet/lib-move.c|2 +
 drivers/staging/lustre/lustre/ldlm/ldlm_lockd.c|9 --
 drivers/staging/lustre/lustre/osc/osc_cache.c  |2 +
 drivers/staging/lustre/lustre/osc/osc_request.c|7 +++--
 drivers/staging/lustre/lustre/ptlrpc/niobuf.c  |7 +++--
 8 files changed, 25 insertions(+), 49 deletions(-)

diff --git a/drivers/staging/lustre/include/linux/libcfs/libcfs_prim.h 
b/drivers/staging/lustre/include/linux/libcfs/libcfs_prim.h
index d4c5965c43b1..2b0dafb6155b 100644
--- a/drivers/staging/lustre/include/linux/libcfs/libcfs_prim.h
+++ b/drivers/staging/lustre/include/linux/libcfs/libcfs_prim.h
@@ -48,35 +48,4 @@
 #define NUM_CACHEPAGES totalram_pages
 #endif
 
-static inline unsigned int memory_pressure_get(void)
-{
-   return current->flags & PF_MEMALLOC;
-}
-
-static inline void memory_pressure_set(void)
-{
-   current->flags |= PF_MEMALLOC;
-}
-
-static inline void memory_pressure_clr(void)
-{
-   current->flags &= ~PF_MEMALLOC;
-}
-
-static inline int cfs_memory_pressure_get_and_set(void)
-{
-   int old = memory_pressure_get();
-
-   if (!old)
-   memory_pressure_set();
-   return old;
-}
-
-static inline void cfs_memory_pressure_restore(int old)
-{
-   if (old)
-   memory_pressure_set();
-   else
-   memory_pressure_clr();
-}
 #endif
diff --git a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_cb.c 
b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_cb.c
index 14450fd5957a..01b31a6bb588 100644
--- a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_cb.c
+++ b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_cb.c
@@ -22,6 +22,7 @@
  *
  */
 
+#include 
 #include "socklnd.h"
 
 struct ksock_tx *
@@ -876,7 +877,7 @@ ksocknal_launch_packet(struct lnet_ni *ni, struct ksock_tx 
*tx,
 int
 ksocknal_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg)
 {
-   int mpflag = 1;
+   unsigned int mpflag = 0;
int type = lntmsg->msg_type;
struct lnet_process_id target = lntmsg->msg_target;
unsigned int payload_niov = lntmsg->msg_niov;
@@ -909,13 +910,13 @@ ksocknal_send(struct lnet_ni *ni, void *private, struct 
lnet_msg *lntmsg)
 tx_frags.paged.kiov[payload_niov]);
 
if (lntmsg->msg_vmflush)
-   mpflag = cfs_memory_pressure_get_and_set();
+   mpflag = memalloc_noreclaim_save();
tx = ksocknal_alloc_tx(KSOCK_MSG_LNET, desc_size);
if (!tx) {
CERROR("Can't allocate tx desc type %d size %d\n",
   type, desc_size);
if (lntmsg->msg_vmflush)
-   cfs_memory_pressure_restore(mpflag);
+   memalloc_noreclaim_restore(mpflag);
return -ENOMEM;
}
 
@@ -949,8 +950,8 @@ ksocknal_send(struct lnet_ni *ni, void *private, struct 
lnet_msg *lntmsg)
 
/* The first fragment will be set later in pro_pack */
rc = ksocknal_launch_packet(ni, tx, target);
-   if (!mpflag)
-   cfs_memory_pressure_restore(mpflag);
+   if (mpflag)
+   memalloc_noreclaim_restore(mpflag);
 
if (!rc)
return 0;
diff --git a/drivers/staging/lustre/lnet/libcfs/tracefile.c 
b/drivers/staging/lustre/lnet/libcfs/tracefile.c
index 514e1845740e..878fbb9745a0 100644
--- a/drivers/staging/lustre/lnet/libcfs/tracefile.c
+++ b/drivers/staging/lustre/lnet/libcfs/tracefile.c
@@ -114,7 +114,7 @@ static struct cfs_trace_page *cfs_tage_alloc(gfp_t gfp)
struct cfs_trace_page *tage;
 
/* My caller is trying to free memory */
-   if (!in_interrupt() && memory_pressure_get())
+   if (!in_interrupt() && (current->flags & PF_MEMALLOC))
return NULL;
 
/*
@@ -192,7 +192,8 @@ cfs_trace_get_tage_try(struct cfs_trace_cpu_data *tcd, 
unsigned long len)
} else {
tage = cfs_tage_alloc(GFP_ATOMIC);
if (unlikely(!tage)) {
-   if (!memory_pressure_get() || in_interrupt())
+   if (!(current->flags & PF_MEMALLOC) ||
+   in_interrupt())
pr_warn_ratelimited("cannot allocate a 
tage (%ld)\n",
tcd->tcd_cur_pages);
return NULL;
diff --git a/drivers/staging/lustre/lnet/lnet/lib-move.c 
b/drivers/staging/lustre/lnet/lnet/lib-move.c
index 

[PATCH 18/30] staging: lustre: replace memory_presure funcitons by standard interfaces.

2018-05-20 Thread NeilBrown
Use memalloc_noreclaim_save() and memalloc_noreclaim_restore(),
and for testing, just directly test the flag in current->flags

Signed-off-by: NeilBrown 
---
 .../lustre/include/linux/libcfs/libcfs_prim.h  |   31 
 .../staging/lustre/lnet/klnds/socklnd/socklnd_cb.c |   11 ---
 drivers/staging/lustre/lnet/libcfs/tracefile.c |5 ++-
 drivers/staging/lustre/lnet/lnet/lib-move.c|2 +
 drivers/staging/lustre/lustre/ldlm/ldlm_lockd.c|9 --
 drivers/staging/lustre/lustre/osc/osc_cache.c  |2 +
 drivers/staging/lustre/lustre/osc/osc_request.c|7 +++--
 drivers/staging/lustre/lustre/ptlrpc/niobuf.c  |7 +++--
 8 files changed, 25 insertions(+), 49 deletions(-)

diff --git a/drivers/staging/lustre/include/linux/libcfs/libcfs_prim.h 
b/drivers/staging/lustre/include/linux/libcfs/libcfs_prim.h
index d4c5965c43b1..2b0dafb6155b 100644
--- a/drivers/staging/lustre/include/linux/libcfs/libcfs_prim.h
+++ b/drivers/staging/lustre/include/linux/libcfs/libcfs_prim.h
@@ -48,35 +48,4 @@
 #define NUM_CACHEPAGES totalram_pages
 #endif
 
-static inline unsigned int memory_pressure_get(void)
-{
-   return current->flags & PF_MEMALLOC;
-}
-
-static inline void memory_pressure_set(void)
-{
-   current->flags |= PF_MEMALLOC;
-}
-
-static inline void memory_pressure_clr(void)
-{
-   current->flags &= ~PF_MEMALLOC;
-}
-
-static inline int cfs_memory_pressure_get_and_set(void)
-{
-   int old = memory_pressure_get();
-
-   if (!old)
-   memory_pressure_set();
-   return old;
-}
-
-static inline void cfs_memory_pressure_restore(int old)
-{
-   if (old)
-   memory_pressure_set();
-   else
-   memory_pressure_clr();
-}
 #endif
diff --git a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_cb.c 
b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_cb.c
index 14450fd5957a..01b31a6bb588 100644
--- a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_cb.c
+++ b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_cb.c
@@ -22,6 +22,7 @@
  *
  */
 
+#include 
 #include "socklnd.h"
 
 struct ksock_tx *
@@ -876,7 +877,7 @@ ksocknal_launch_packet(struct lnet_ni *ni, struct ksock_tx 
*tx,
 int
 ksocknal_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg)
 {
-   int mpflag = 1;
+   unsigned int mpflag = 0;
int type = lntmsg->msg_type;
struct lnet_process_id target = lntmsg->msg_target;
unsigned int payload_niov = lntmsg->msg_niov;
@@ -909,13 +910,13 @@ ksocknal_send(struct lnet_ni *ni, void *private, struct 
lnet_msg *lntmsg)
 tx_frags.paged.kiov[payload_niov]);
 
if (lntmsg->msg_vmflush)
-   mpflag = cfs_memory_pressure_get_and_set();
+   mpflag = memalloc_noreclaim_save();
tx = ksocknal_alloc_tx(KSOCK_MSG_LNET, desc_size);
if (!tx) {
CERROR("Can't allocate tx desc type %d size %d\n",
   type, desc_size);
if (lntmsg->msg_vmflush)
-   cfs_memory_pressure_restore(mpflag);
+   memalloc_noreclaim_restore(mpflag);
return -ENOMEM;
}
 
@@ -949,8 +950,8 @@ ksocknal_send(struct lnet_ni *ni, void *private, struct 
lnet_msg *lntmsg)
 
/* The first fragment will be set later in pro_pack */
rc = ksocknal_launch_packet(ni, tx, target);
-   if (!mpflag)
-   cfs_memory_pressure_restore(mpflag);
+   if (mpflag)
+   memalloc_noreclaim_restore(mpflag);
 
if (!rc)
return 0;
diff --git a/drivers/staging/lustre/lnet/libcfs/tracefile.c 
b/drivers/staging/lustre/lnet/libcfs/tracefile.c
index 514e1845740e..878fbb9745a0 100644
--- a/drivers/staging/lustre/lnet/libcfs/tracefile.c
+++ b/drivers/staging/lustre/lnet/libcfs/tracefile.c
@@ -114,7 +114,7 @@ static struct cfs_trace_page *cfs_tage_alloc(gfp_t gfp)
struct cfs_trace_page *tage;
 
/* My caller is trying to free memory */
-   if (!in_interrupt() && memory_pressure_get())
+   if (!in_interrupt() && (current->flags & PF_MEMALLOC))
return NULL;
 
/*
@@ -192,7 +192,8 @@ cfs_trace_get_tage_try(struct cfs_trace_cpu_data *tcd, 
unsigned long len)
} else {
tage = cfs_tage_alloc(GFP_ATOMIC);
if (unlikely(!tage)) {
-   if (!memory_pressure_get() || in_interrupt())
+   if (!(current->flags & PF_MEMALLOC) ||
+   in_interrupt())
pr_warn_ratelimited("cannot allocate a 
tage (%ld)\n",
tcd->tcd_cur_pages);
return NULL;
diff --git a/drivers/staging/lustre/lnet/lnet/lib-move.c 
b/drivers/staging/lustre/lnet/lnet/lib-move.c
index 60464135161b..f8eaf8ff8d8d 100644