Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 49d0e64b authored by Mike Christie's avatar Mike Christie Committed by James Bottomley
Browse files

[SCSI] iscsi class: fix gfp use in ping compl and host event



If a ping or host event were to occur when memory is low
we do not want to use GFP_KERNEL, because the paths
sending them cannot block for data to be written. These
paths might be needed to recover write paths. Use GFP_NOIO
instead.

Signed-off-by: default avatarMike Christie <michaelc@cs.wisc.edu>
Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
parent 76c8ae4b
Loading
Loading
Loading
Loading
+4 −4
Original line number Original line Diff line number Diff line
@@ -1486,7 +1486,7 @@ void iscsi_post_host_event(uint32_t host_no, struct iscsi_transport *transport,
	struct iscsi_uevent *ev;
	struct iscsi_uevent *ev;
	int len = NLMSG_SPACE(sizeof(*ev) + data_size);
	int len = NLMSG_SPACE(sizeof(*ev) + data_size);


	skb = alloc_skb(len, GFP_KERNEL);
	skb = alloc_skb(len, GFP_NOIO);
	if (!skb) {
	if (!skb) {
		printk(KERN_ERR "gracefully ignored host event (%d):%d OOM\n",
		printk(KERN_ERR "gracefully ignored host event (%d):%d OOM\n",
		       host_no, code);
		       host_no, code);
@@ -1504,7 +1504,7 @@ void iscsi_post_host_event(uint32_t host_no, struct iscsi_transport *transport,
	if (data_size)
	if (data_size)
		memcpy((char *)ev + sizeof(*ev), data, data_size);
		memcpy((char *)ev + sizeof(*ev), data, data_size);


	iscsi_multicast_skb(skb, ISCSI_NL_GRP_ISCSID, GFP_KERNEL);
	iscsi_multicast_skb(skb, ISCSI_NL_GRP_ISCSID, GFP_NOIO);
}
}
EXPORT_SYMBOL_GPL(iscsi_post_host_event);
EXPORT_SYMBOL_GPL(iscsi_post_host_event);


@@ -1517,7 +1517,7 @@ void iscsi_ping_comp_event(uint32_t host_no, struct iscsi_transport *transport,
	struct iscsi_uevent *ev;
	struct iscsi_uevent *ev;
	int len = NLMSG_SPACE(sizeof(*ev) + data_size);
	int len = NLMSG_SPACE(sizeof(*ev) + data_size);


	skb = alloc_skb(len, GFP_KERNEL);
	skb = alloc_skb(len, GFP_NOIO);
	if (!skb) {
	if (!skb) {
		printk(KERN_ERR "gracefully ignored ping comp: OOM\n");
		printk(KERN_ERR "gracefully ignored ping comp: OOM\n");
		return;
		return;
@@ -1533,7 +1533,7 @@ void iscsi_ping_comp_event(uint32_t host_no, struct iscsi_transport *transport,
	ev->r.ping_comp.data_size = data_size;
	ev->r.ping_comp.data_size = data_size;
	memcpy((char *)ev + sizeof(*ev), data, data_size);
	memcpy((char *)ev + sizeof(*ev), data, data_size);


	iscsi_multicast_skb(skb, ISCSI_NL_GRP_ISCSID, GFP_KERNEL);
	iscsi_multicast_skb(skb, ISCSI_NL_GRP_ISCSID, GFP_NOIO);
}
}
EXPORT_SYMBOL_GPL(iscsi_ping_comp_event);
EXPORT_SYMBOL_GPL(iscsi_ping_comp_event);