diff mbox

[3/3] Display extended counter set if available

Message ID alpine.DEB.2.20.1512211330290.19955@east.gentwo.org (mailing list archive)
State Accepted
Headers show

Commit Message

Christoph Lameter (Ampere) Dec. 21, 2015, 7:31 p.m. UTC
On Mon, 21 Dec 2015, Hal Rosenstock wrote:

> > Don't we need to change all the sysfs_remove_groups to use get_counter_table as
> > well?
>
> Looks like it to me too. Good catch.

Fix follows:

From: Christoph Lameter <cl@linux.com>
Subject: Fix sysfs entry removal by storing the table format in  pma_table

Store the table being used in the ib_port structure and use it when sysfs
entries have to be removed.

Signed-off-by: Christoph Lameter <cl@linux.com>

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Ira Weiny Dec. 21, 2015, 7:47 p.m. UTC | #1
On Mon, Dec 21, 2015 at 01:31:31PM -0600, Christoph Lameter wrote:
> On Mon, 21 Dec 2015, Hal Rosenstock wrote:
> 
> > > Don't we need to change all the sysfs_remove_groups to use get_counter_table as
> > > well?
> >
> > Looks like it to me too. Good catch.
> 
> Fix follows:
> 
> From: Christoph Lameter <cl@linux.com>
> Subject: Fix sysfs entry removal by storing the table format in  pma_table
> 
> Store the table being used in the ib_port structure and use it when sysfs
> entries have to be removed.
> 
> Signed-off-by: Christoph Lameter <cl@linux.com>

Reviewed-by: Ira Weiny <ira.weiny@intel.com>

> 
> Index: linux/drivers/infiniband/core/sysfs.c
> ===================================================================
> --- linux.orig/drivers/infiniband/core/sysfs.c
> +++ linux/drivers/infiniband/core/sysfs.c
> @@ -47,6 +47,7 @@ struct ib_port {
>  	struct attribute_group gid_group;
>  	struct attribute_group pkey_group;
>  	u8                     port_num;
> +	struct attribute_group *pma_table;
>  };
> 
>  struct port_attribute {
> @@ -651,7 +652,8 @@ static int add_port(struct ib_device *de
>  		return ret;
>  	}
> 
> -	ret = sysfs_create_group(&p->kobj, get_counter_table(device));
> +	p->pma_table = get_counter_table(device);
> +	ret = sysfs_create_group(&p->kobj, p->pma_table);
>  	if (ret)
>  		goto err_put;
> 
> @@ -710,7 +712,7 @@ err_free_gid:
>  	p->gid_group.attrs = NULL;
> 
>  err_remove_pma:
> -	sysfs_remove_group(&p->kobj, &pma_group);
> +	sysfs_remove_group(&p->kobj, p->pma_table);
> 
>  err_put:
>  	kobject_put(&p->kobj);
> @@ -923,7 +925,7 @@ static void free_port_list_attributes(st
>  	list_for_each_entry_safe(p, t, &device->port_list, entry) {
>  		struct ib_port *port = container_of(p, struct ib_port, kobj);
>  		list_del(&p->entry);
> -		sysfs_remove_group(p, &pma_group);
> +		sysfs_remove_group(p, port->pma_table);
>  		sysfs_remove_group(p, &port->pkey_group);
>  		sysfs_remove_group(p, &port->gid_group);
>  		kobject_put(p);
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Hal Rosenstock Dec. 21, 2015, 7:52 p.m. UTC | #2
On 12/21/2015 2:47 PM, ira.weiny wrote:
> On Mon, Dec 21, 2015 at 01:31:31PM -0600, Christoph Lameter wrote:
>> On Mon, 21 Dec 2015, Hal Rosenstock wrote:
>>
>>>> Don't we need to change all the sysfs_remove_groups to use get_counter_table as
>>>> well?
>>>
>>> Looks like it to me too. Good catch.
>>
>> Fix follows:
>>
>> From: Christoph Lameter <cl@linux.com>
>> Subject: Fix sysfs entry removal by storing the table format in  pma_table
>>
>> Store the table being used in the ib_port structure and use it when sysfs
>> entries have to be removed.
>>
>> Signed-off-by: Christoph Lameter <cl@linux.com>
> 
> Reviewed-by: Ira Weiny <ira.weiny@intel.com>

Reviewed-by: Hal Rosenstock <hal@mellanox.com>

> 
>>
>> Index: linux/drivers/infiniband/core/sysfs.c
>> ===================================================================
>> --- linux.orig/drivers/infiniband/core/sysfs.c
>> +++ linux/drivers/infiniband/core/sysfs.c
>> @@ -47,6 +47,7 @@ struct ib_port {
>>  	struct attribute_group gid_group;
>>  	struct attribute_group pkey_group;
>>  	u8                     port_num;
>> +	struct attribute_group *pma_table;
>>  };
>>
>>  struct port_attribute {
>> @@ -651,7 +652,8 @@ static int add_port(struct ib_device *de
>>  		return ret;
>>  	}
>>
>> -	ret = sysfs_create_group(&p->kobj, get_counter_table(device));
>> +	p->pma_table = get_counter_table(device);
>> +	ret = sysfs_create_group(&p->kobj, p->pma_table);
>>  	if (ret)
>>  		goto err_put;
>>
>> @@ -710,7 +712,7 @@ err_free_gid:
>>  	p->gid_group.attrs = NULL;
>>
>>  err_remove_pma:
>> -	sysfs_remove_group(&p->kobj, &pma_group);
>> +	sysfs_remove_group(&p->kobj, p->pma_table);
>>
>>  err_put:
>>  	kobject_put(&p->kobj);
>> @@ -923,7 +925,7 @@ static void free_port_list_attributes(st
>>  	list_for_each_entry_safe(p, t, &device->port_list, entry) {
>>  		struct ib_port *port = container_of(p, struct ib_port, kobj);
>>  		list_del(&p->entry);
>> -		sysfs_remove_group(p, &pma_group);
>> +		sysfs_remove_group(p, port->pma_table);
>>  		sysfs_remove_group(p, &port->pkey_group);
>>  		sysfs_remove_group(p, &port->gid_group);
>>  		kobject_put(p);
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

Index: linux/drivers/infiniband/core/sysfs.c
===================================================================
--- linux.orig/drivers/infiniband/core/sysfs.c
+++ linux/drivers/infiniband/core/sysfs.c
@@ -47,6 +47,7 @@  struct ib_port {
 	struct attribute_group gid_group;
 	struct attribute_group pkey_group;
 	u8                     port_num;
+	struct attribute_group *pma_table;
 };

 struct port_attribute {
@@ -651,7 +652,8 @@  static int add_port(struct ib_device *de
 		return ret;
 	}

-	ret = sysfs_create_group(&p->kobj, get_counter_table(device));
+	p->pma_table = get_counter_table(device);
+	ret = sysfs_create_group(&p->kobj, p->pma_table);
 	if (ret)
 		goto err_put;

@@ -710,7 +712,7 @@  err_free_gid:
 	p->gid_group.attrs = NULL;

 err_remove_pma:
-	sysfs_remove_group(&p->kobj, &pma_group);
+	sysfs_remove_group(&p->kobj, p->pma_table);

 err_put:
 	kobject_put(&p->kobj);
@@ -923,7 +925,7 @@  static void free_port_list_attributes(st
 	list_for_each_entry_safe(p, t, &device->port_list, entry) {
 		struct ib_port *port = container_of(p, struct ib_port, kobj);
 		list_del(&p->entry);
-		sysfs_remove_group(p, &pma_group);
+		sysfs_remove_group(p, port->pma_table);
 		sysfs_remove_group(p, &port->pkey_group);
 		sysfs_remove_group(p, &port->gid_group);
 		kobject_put(p);