From: wangyijing <wangyijing@huawei.com>
To: John Garry <john.garry@huawei.com>,
Johannes Thumshirn <jthumshirn@suse.de>,
jejb@linux.vnet.ibm.com, martin.petersen@oracle.com
Cc: chenqilin2@huawei.com, hare@suse.com, linux-scsi@vger.kernel.org,
linux-kernel@vger.kernel.org, chenxiang66@hisilicon.com,
huangdaode@hisilicon.com, wangkefeng.wang@huawei.com,
zhaohongjiang@huawei.com, dingtianhong@huawei.com,
guohanjun@huawei.com, yanaijie@huawei.com, hch@lst.de,
dan.j.williams@intel.com, emilne@redhat.com, thenzl@redhat.com,
wefu@redhat.com, charles.chenxin@huawei.com,
chenweilong@huawei.com, Yousong He <heyousong@huawei.com>
Subject: Re: [PATCH v2 1/2] libsas: Don't process sas events in static works
Date: Thu, 15 Jun 2017 16:21:53 +0800 [thread overview]
Message-ID: <594243A1.7050200@huawei.com> (raw)
In-Reply-To: <1f9d5190-97f2-f98e-c7c4-80e259346e91@huawei.com>
在 2017/6/15 16:00, John Garry 写道:
> On 15/06/2017 08:37, wangyijing wrote:
>>
>>
>> 在 2017/6/14 21:08, John Garry 写道:
>>> On 14/06/2017 10:04, wangyijing wrote:
>>>>>> static void notify_ha_event(struct sas_ha_struct *sas_ha, enum ha_event event)
>>>>>>>> {
>>>>>>>> + struct sas_ha_event *ev;
>>>>>>>> +
>>>>>>>> BUG_ON(event >= HA_NUM_EVENTS);
>>>>>>>>
>>>>>>>> - sas_queue_event(event, &sas_ha->pending,
>>>>>>>> - &sas_ha->ha_events[event].work, sas_ha);
>>>>>>>> + ev = kzalloc(sizeof(*ev), GFP_ATOMIC);
>>>>>>>> + if (!ev)
>>>>>>>> + return;
>>>>>> GFP_ATOMIC allocations can fail and then no events will be queued *and* we
>>>>>> don't report the error back to the caller.
>>>>>>
>>>> Yes, it's really a problem, but I don't find a better solution, do you have some suggestion ?
>>>>
>>>
>>> Dan raised an issue with this approach, regarding a malfunctioning PHY which spews out events. I still don't think we're handling it safely. Here's the suggestion:
>>> - each asd_sas_phy owns a finite-sized pool of events
>>> - when the event pool becomes exhausted, libsas stops queuing events (obviously) and disables the PHY in the LLDD
>>> - upon attempting to re-enable the PHY from sysfs, libsas first checks that the pool is still not exhausted
>>>
>>> If you cannot find a good solution, then let us know and we can help.
>>
>> Hi John and Dan, what's event you found on malfunctioning PHY, if the event is PORTE_BROADCAST_RCVD, since
>> every PORTE_BROADCAST_RCVD libsas always call sas_revalidate_domain(), what about keeping a broadcast waiting(not queued in workqueue)
>> and discard others. If the event is other types, things may become knotty.
>>
>
> As I mentioned in the v1 series discussion, I found a poorly connected expander PHY was spewing out PHY up and loss of signal events continuously. This is the sort of situation we should protect against. Current solution is ok, as it uses a static event per port/PHY/HA.
>
> The point is that we cannot allow a PHY to continuously send events to libsas, which may lead to memory exhaustion.
The current solution won't introduce memory exhaustion, but it's not ok, since the root of this issue is it may lost event which is normal.
If we cannot identify the abnormal PHY, I think your mem pool idea is a candidate solution.
>
> John
>
>>
>>>
>>> John
>>>
>>>
>>> .
>>>
>>
>>
>> .
>>
>
>
>
> .
>
next prev parent reply other threads:[~2017-06-15 8:21 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-14 7:33 [PATCH v2 0/2] Enhance libsas hotplug feature Yijing Wang
2017-06-14 7:33 ` [PATCH v2 1/2] libsas: Don't process sas events in static works Yijing Wang
2017-06-14 8:48 ` Johannes Thumshirn
2017-06-14 9:04 ` wangyijing
2017-06-14 9:18 ` Johannes Thumshirn
2017-06-14 9:28 ` wangyijing
2017-06-14 13:08 ` John Garry
2017-06-15 7:37 ` wangyijing
2017-06-15 8:00 ` John Garry
2017-06-15 8:21 ` wangyijing [this message]
2017-06-14 7:33 ` [PATCH v2 2/2] libsas: Enhance libsas hotplug Yijing Wang
2017-06-14 8:57 ` Johannes Thumshirn
2017-06-14 9:15 ` wangyijing
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=594243A1.7050200@huawei.com \
--to=wangyijing@huawei.com \
--cc=charles.chenxin@huawei.com \
--cc=chenqilin2@huawei.com \
--cc=chenweilong@huawei.com \
--cc=chenxiang66@hisilicon.com \
--cc=dan.j.williams@intel.com \
--cc=dingtianhong@huawei.com \
--cc=emilne@redhat.com \
--cc=guohanjun@huawei.com \
--cc=hare@suse.com \
--cc=hch@lst.de \
--cc=heyousong@huawei.com \
--cc=huangdaode@hisilicon.com \
--cc=jejb@linux.vnet.ibm.com \
--cc=john.garry@huawei.com \
--cc=jthumshirn@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=thenzl@redhat.com \
--cc=wangkefeng.wang@huawei.com \
--cc=wefu@redhat.com \
--cc=yanaijie@huawei.com \
--cc=zhaohongjiang@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox