This fix seems to do the trick. I tested it with the lpfc driver and I didn't see any more warnings. Alex -----Original Message----- From: linux-scsi-owner@xxxxxxxxxxxxxxx [mailto:linux-scsi-owner@xxxxxxxxxxxxxxx] On Behalf Of James Bottomley Sent: Saturday, March 20, 2010 1:44 PM To: Mike Christie Cc: Christof Schmitt; linux-scsi@xxxxxxxxxxxxxxx Subject: Re: [PATCH] scsi_transport_fc: Initialize sysfs attributes with sysfs_attr_init On Tue, 2010-03-16 at 13:49 -0700, James Bottomley wrote: > On Tue, 2010-03-16 at 15:48 -0500, Mike Christie wrote: > > On 03/16/2010 05:14 AM, Christof Schmitt wrote: > > > With the new lockdep tracking in sysfs, sysfs_attr_init has to be used > > > for initializing all non-static sysfs attributes. Otherwise, lockdep > > > will warn about the missing initialization with: > > > > > > Mar 15 09:19:49 t6345029 kernel: BUG: key 000000002f5ae350 not in .data! > > > Mar 15 09:19:49 t6345029 kernel: BUG: key 000000002f5ae388 not in .data! > > > Mar 15 09:19:49 t6345029 kernel: BUG: key 000000002f5ae3c0 not in .data! > > > Mar 15 09:19:49 t6345029 kernel: BUG: key 000000002f5ae3f8 not in .data! > > > > > > > I think iscsi needs this too, but I am not see this error message. I > > just tried iscsi and fc/lpfc with linus's tree and did not see those > > errors for either. What .config settings do I need for this? I have: > > It's a lot worse than that ... every transport class plus some of the > core attributes will need this. Actually, it looks like we can fix all the transport classes at one go in the attribute container code rather than doing this per-attribute. Can someone who sees the problem check this out? Thanks, James --- diff --git a/drivers/base/attribute_container.c b/drivers/base/attribute_container.c index b9cda05..8fc200b 100644 --- a/drivers/base/attribute_container.c +++ b/drivers/base/attribute_container.c @@ -328,6 +328,7 @@ attribute_container_add_attrs(struct device *classdev) return sysfs_create_group(&classdev->kobj, cont->grp); for (i = 0; attrs[i]; i++) { + sysfs_attr_init(&attrs[i]->attr); error = device_create_file(classdev, attrs[i]); if (error) return error; -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html ��.n��������+%������w��{.n�����{������ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f