diff options
Diffstat (limited to 'drivers/scsi/pmcraid.c')
| -rw-r--r-- | drivers/scsi/pmcraid.c | 21 | 
1 files changed, 16 insertions, 5 deletions
diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c index bd6f743d87a7..be8ce54f99b2 100644 --- a/drivers/scsi/pmcraid.c +++ b/drivers/scsi/pmcraid.c @@ -1404,11 +1404,22 @@ enum {  };  #define PMCRAID_AEN_CMD_MAX (__PMCRAID_AEN_CMD_MAX - 1) +static struct genl_multicast_group pmcraid_mcgrps[] = { +	{ .name = "events", /* not really used - see ID discussion below */ }, +}; +  static struct genl_family pmcraid_event_family = { -	.id = GENL_ID_GENERATE, +	/* +	 * Due to prior multicast group abuse (the code having assumed that +	 * the family ID can be used as a multicast group ID) we need to +	 * statically allocate a family (and thus group) ID. +	 */ +	.id = GENL_ID_PMCRAID,  	.name = "pmcraid",  	.version = 1, -	.maxattr = PMCRAID_AEN_ATTR_MAX +	.maxattr = PMCRAID_AEN_ATTR_MAX, +	.mcgrps = pmcraid_mcgrps, +	.n_mcgrps = ARRAY_SIZE(pmcraid_mcgrps),  };  /** @@ -1511,9 +1522,8 @@ static int pmcraid_notify_aen(  		return result;  	} -	result = -		genlmsg_multicast(&pmcraid_event_family, skb, 0, -				  pmcraid_event_family.id, GFP_ATOMIC); +	result = genlmsg_multicast(&pmcraid_event_family, skb, +				   0, 0, GFP_ATOMIC);  	/* If there are no listeners, genlmsg_multicast may return non-zero  	 * value. @@ -4315,6 +4325,7 @@ static struct scsi_host_template pmcraid_host_template = {  	.this_id = -1,  	.sg_tablesize = PMCRAID_MAX_IOADLS,  	.max_sectors = PMCRAID_IOA_MAX_SECTORS, +	.no_write_same = 1,  	.cmd_per_lun = PMCRAID_MAX_CMD_PER_LUN,  	.use_clustering = ENABLE_CLUSTERING,  	.shost_attrs = pmcraid_host_attrs,  | 
