[S390] zfcp: Report microcode level through service level interface
Register zfcp with the new /proc/service_level interface to report the FCP microcode level. When the adapter goes offline or a channel path disappears, zfcp unregisters, since the microcode version might change and zfcp does not know about it. Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:

committed by
Martin Schwidefsky

parent
6bcac508fb
commit
bd43a42b7e
@@ -26,6 +26,7 @@
|
||||
*/
|
||||
|
||||
#include <linux/miscdevice.h>
|
||||
#include <linux/seq_file.h>
|
||||
#include "zfcp_ext.h"
|
||||
|
||||
static char *device;
|
||||
@@ -436,6 +437,16 @@ static void _zfcp_status_read_scheduler(struct work_struct *work)
|
||||
stat_work));
|
||||
}
|
||||
|
||||
static void zfcp_print_sl(struct seq_file *m, struct service_level *sl)
|
||||
{
|
||||
struct zfcp_adapter *adapter =
|
||||
container_of(sl, struct zfcp_adapter, service_level);
|
||||
|
||||
seq_printf(m, "zfcp: %s microcode level %x\n",
|
||||
dev_name(&adapter->ccw_device->dev),
|
||||
adapter->fsf_lic_version);
|
||||
}
|
||||
|
||||
/**
|
||||
* zfcp_adapter_enqueue - enqueue a new adapter to the list
|
||||
* @ccw_device: pointer to the struct cc_device
|
||||
@@ -500,6 +511,8 @@ int zfcp_adapter_enqueue(struct ccw_device *ccw_device)
|
||||
INIT_WORK(&adapter->stat_work, _zfcp_status_read_scheduler);
|
||||
INIT_WORK(&adapter->scan_work, _zfcp_scan_ports_later);
|
||||
|
||||
adapter->service_level.seq_print = zfcp_print_sl;
|
||||
|
||||
/* mark adapter unusable as long as sysfs registration is not complete */
|
||||
atomic_set_mask(ZFCP_STATUS_COMMON_REMOVE, &adapter->status);
|
||||
|
||||
|
Reference in New Issue
Block a user