116 lines
3.4 KiB
Diff
116 lines
3.4 KiB
Diff
|
From e48773d12e05ae182b1de65f61c37b91239820a7 Mon Sep 17 00:00:00 2001
|
||
|
From: Thomas Gleixner <tglx@linutronix.de>
|
||
|
Date: Sat, 12 Nov 2011 14:00:48 +0100
|
||
|
Subject: [PATCH 268/365] scsi/fcoe: Make RT aware.
|
||
|
|
||
|
Do not disable preemption while taking sleeping locks. All user look safe
|
||
|
for migrate_diable() only.
|
||
|
|
||
|
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||
|
---
|
||
|
drivers/scsi/fcoe/fcoe.c | 16 ++++++++--------
|
||
|
drivers/scsi/fcoe/fcoe_ctlr.c | 4 ++--
|
||
|
drivers/scsi/libfc/fc_exch.c | 4 ++--
|
||
|
3 files changed, 12 insertions(+), 12 deletions(-)
|
||
|
|
||
|
diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c
|
||
|
index 9bd41a35a78a..8e2d436c2e3f 100644
|
||
|
--- a/drivers/scsi/fcoe/fcoe.c
|
||
|
+++ b/drivers/scsi/fcoe/fcoe.c
|
||
|
@@ -1455,11 +1455,11 @@ static int fcoe_rcv(struct sk_buff *skb, struct net_device *netdev,
|
||
|
static int fcoe_alloc_paged_crc_eof(struct sk_buff *skb, int tlen)
|
||
|
{
|
||
|
struct fcoe_percpu_s *fps;
|
||
|
- int rc;
|
||
|
+ int rc, cpu = get_cpu_light();
|
||
|
|
||
|
- fps = &get_cpu_var(fcoe_percpu);
|
||
|
+ fps = &per_cpu(fcoe_percpu, cpu);
|
||
|
rc = fcoe_get_paged_crc_eof(skb, tlen, fps);
|
||
|
- put_cpu_var(fcoe_percpu);
|
||
|
+ put_cpu_light();
|
||
|
|
||
|
return rc;
|
||
|
}
|
||
|
@@ -1646,11 +1646,11 @@ static inline int fcoe_filter_frames(struct fc_lport *lport,
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
- stats = per_cpu_ptr(lport->stats, get_cpu());
|
||
|
+ stats = per_cpu_ptr(lport->stats, get_cpu_light());
|
||
|
stats->InvalidCRCCount++;
|
||
|
if (stats->InvalidCRCCount < 5)
|
||
|
printk(KERN_WARNING "fcoe: dropping frame with CRC error\n");
|
||
|
- put_cpu();
|
||
|
+ put_cpu_light();
|
||
|
return -EINVAL;
|
||
|
}
|
||
|
|
||
|
@@ -1693,7 +1693,7 @@ static void fcoe_recv_frame(struct sk_buff *skb)
|
||
|
*/
|
||
|
hp = (struct fcoe_hdr *) skb_network_header(skb);
|
||
|
|
||
|
- stats = per_cpu_ptr(lport->stats, get_cpu());
|
||
|
+ stats = per_cpu_ptr(lport->stats, get_cpu_light());
|
||
|
if (unlikely(FC_FCOE_DECAPS_VER(hp) != FC_FCOE_VER)) {
|
||
|
if (stats->ErrorFrames < 5)
|
||
|
printk(KERN_WARNING "fcoe: FCoE version "
|
||
|
@@ -1725,13 +1725,13 @@ static void fcoe_recv_frame(struct sk_buff *skb)
|
||
|
goto drop;
|
||
|
|
||
|
if (!fcoe_filter_frames(lport, fp)) {
|
||
|
- put_cpu();
|
||
|
+ put_cpu_light();
|
||
|
fc_exch_recv(lport, fp);
|
||
|
return;
|
||
|
}
|
||
|
drop:
|
||
|
stats->ErrorFrames++;
|
||
|
- put_cpu();
|
||
|
+ put_cpu_light();
|
||
|
kfree_skb(skb);
|
||
|
}
|
||
|
|
||
|
diff --git a/drivers/scsi/fcoe/fcoe_ctlr.c b/drivers/scsi/fcoe/fcoe_ctlr.c
|
||
|
index f5f3a8113bc5..59ab3b40331c 100644
|
||
|
--- a/drivers/scsi/fcoe/fcoe_ctlr.c
|
||
|
+++ b/drivers/scsi/fcoe/fcoe_ctlr.c
|
||
|
@@ -834,7 +834,7 @@ static unsigned long fcoe_ctlr_age_fcfs(struct fcoe_ctlr *fip)
|
||
|
|
||
|
INIT_LIST_HEAD(&del_list);
|
||
|
|
||
|
- stats = per_cpu_ptr(fip->lp->stats, get_cpu());
|
||
|
+ stats = per_cpu_ptr(fip->lp->stats, get_cpu_light());
|
||
|
|
||
|
list_for_each_entry_safe(fcf, next, &fip->fcfs, list) {
|
||
|
deadline = fcf->time + fcf->fka_period + fcf->fka_period / 2;
|
||
|
@@ -870,7 +870,7 @@ static unsigned long fcoe_ctlr_age_fcfs(struct fcoe_ctlr *fip)
|
||
|
sel_time = fcf->time;
|
||
|
}
|
||
|
}
|
||
|
- put_cpu();
|
||
|
+ put_cpu_light();
|
||
|
|
||
|
list_for_each_entry_safe(fcf, next, &del_list, list) {
|
||
|
/* Removes fcf from current list */
|
||
|
diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c
|
||
|
index d0a86ef80652..6b692e5802e0 100644
|
||
|
--- a/drivers/scsi/libfc/fc_exch.c
|
||
|
+++ b/drivers/scsi/libfc/fc_exch.c
|
||
|
@@ -814,10 +814,10 @@ static struct fc_exch *fc_exch_em_alloc(struct fc_lport *lport,
|
||
|
}
|
||
|
memset(ep, 0, sizeof(*ep));
|
||
|
|
||
|
- cpu = get_cpu();
|
||
|
+ cpu = get_cpu_light();
|
||
|
pool = per_cpu_ptr(mp->pool, cpu);
|
||
|
spin_lock_bh(&pool->lock);
|
||
|
- put_cpu();
|
||
|
+ put_cpu_light();
|
||
|
|
||
|
/* peek cache of free slot */
|
||
|
if (pool->left != FC_XID_UNKNOWN) {
|
||
|
--
|
||
|
2.28.0
|
||
|
|