iprutils/iprinit.c
Brian King 25bac9e585 iprinit: Don't log errors if ipr driver not loaded
If the iprinit service is enabled but there are no ipr adapters
on the system and therefore the ipr driver is not loaded, let's not
log any messages in the log telling the user they need to manually
run iprinit to ensure their RAID adapters are running optimally.

Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
2016-01-27 16:24:46 -06:00

92 lines
2 KiB
C

/**
* IBM IPR adapter initialization utility
*
* (C) Copyright 2004, 2008
* International Business Machines Corporation and others.
* All Rights Reserved. This program and the accompanying
* materials are made available under the terms of the
* Common Public License v1.0 which accompanies this distribution.
*
*/
/*
* $Header: /cvsroot/iprdd/iprutils/iprinit.c,v 1.22 2008/11/20 01:20:20 wboyer Exp $
*/
#include <unistd.h>
#include <sys/ioctl.h>
#include <scsi/sg.h>
#include <scsi/scsi.h>
#include <sys/stat.h>
#ifndef iprlib_h
#include "iprlib.h"
#endif
#include <sys/mman.h>
char *tool_name = "iprinit";
static void init_all()
{
struct ipr_ioa *ioa;
int rc = tool_init(1);
if (rc && rc != -ENXIO) {
if (daemonize)
syslog(LOG_ERR, "Run iprinit manually to ensure all ipr RAID adapters are running optimally.\n");
else
syslog(LOG_ERR, "Error initializing adapters. Perhaps run with sudo?\n");
}
check_current_config(false);
for_each_ioa(ioa)
ipr_init_ioa(ioa);
}
static void kevent_handler(char *buf)
{
polling_mode = 0;
if (!strncmp(buf, "change@/class/scsi_host", 23) ||
(!strncmp(buf, "change@/devices/pci", 19) && strstr(buf, "scsi_host")))
scsi_host_kevent(buf, ipr_init_ioa);
else if (!strncmp(buf, "add@/class/scsi_generic", 23) ||
(!strncmp(buf, "add@/devices/pci", 16) && strstr(buf, "scsi_generic")))
scsi_dev_kevent(buf, find_gen_dev, ipr_init_dev);
else if (!strncmp(buf, "add@/block/sd", 13))
scsi_dev_kevent(buf, find_blk_dev, ipr_init_dev);
}
static void poll_ioas()
{
polling_mode = 1;
init_all();
}
int main(int argc, char *argv[])
{
int i;
ipr_sg_required = 1;
openlog("iprinit", LOG_PERROR | LOG_PID | LOG_CONS, LOG_USER);
for (i = 1; i < argc; i++) {
if (parse_option(argv[i]))
continue;
else {
printf("Usage: iprinit [options]\n");
printf(" Options: --version [--daemon] Print iprinit version\n");
return -EINVAL;
}
}
init_all();
if (daemonize) {
ipr_daemonize();
return handle_events(poll_ioas, 60, kevent_handler);
}
return 0;
}