Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1554417 > unrolled thread
| Started by | Bhumika Goyal <bhumirks@gmail.com> |
|---|---|
| First post | 2017-01-09 16:30 +0100 |
| Last post | 2017-01-10 16:20 +0100 |
| Articles | 5 — 3 participants |
Back to article view | Back to linux.kernel
[PATCH] vhost: scsi: constify target_core_fabric_ops structures Bhumika Goyal <bhumirks@gmail.com> - 2017-01-09 16:30 +0100
Re: [PATCH] vhost: scsi: constify target_core_fabric_ops structures Jason Wang <jasowang@redhat.com> - 2017-01-10 04:00 +0100
Re: [PATCH] vhost: scsi: constify target_core_fabric_ops structures "Michael S. Tsirkin" <mst@redhat.com> - 2017-01-10 06:20 +0100
Re: [PATCH] vhost: scsi: constify target_core_fabric_ops structures Bhumika Goyal <bhumirks@gmail.com> - 2017-01-10 13:50 +0100
Re: [PATCH] vhost: scsi: constify target_core_fabric_ops structures "Michael S. Tsirkin" <mst@redhat.com> - 2017-01-10 16:20 +0100
| From | Bhumika Goyal <bhumirks@gmail.com> |
|---|---|
| Date | 2017-01-09 16:30 +0100 |
| Subject | [PATCH] vhost: scsi: constify target_core_fabric_ops structures |
| Message-ID | <sXK3v-5SD-21@gated-at.bofh.it> |
Declare target_core_fabric_ops strucrues as const as they are only
passed as an argument to the functions target_register_template and
target_unregister_template. The arguments are of type const struct
target_core_fabric_ops *, so target_core_fabric_ops structures having
this property can be declared const.
Done using Coccinelle:
@r disable optional_qualifier@
identifier i;
position p;
@@
static struct target_core_fabric_ops i@p={...};
@ok@
position p;
identifier r.i;
@@
(
target_register_template(&i@p)
|
target_unregister_template(&i@p)
)
@bad@
position p!={r.p,ok.p};
identifier r.i;
@@
i@p
@depends on !bad disable optional_qualifier@
identifier r.i;
@@
+const
struct target_core_fabric_ops i;
File size before: drivers/vhost/scsi.o
text data bss dec hex filename
18063 2985 40 21088 5260 drivers/vhost/scsi.o
File size after: drivers/vhost/scsi.o
text data bss dec hex filename
18479 2601 40 21120 5280 drivers/vhost/scsi.o
Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
---
drivers/vhost/scsi.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/vhost/scsi.c b/drivers/vhost/scsi.c
index 253310c..620366d 100644
--- a/drivers/vhost/scsi.c
+++ b/drivers/vhost/scsi.c
@@ -2087,7 +2087,7 @@ static void vhost_scsi_drop_tport(struct se_wwn *wwn)
NULL,
};
-static struct target_core_fabric_ops vhost_scsi_ops = {
+static const struct target_core_fabric_ops vhost_scsi_ops = {
.module = THIS_MODULE,
.name = "vhost",
.get_fabric_name = vhost_scsi_get_fabric_name,
--
1.9.1
[toc] | [next] | [standalone]
| From | Jason Wang <jasowang@redhat.com> |
|---|---|
| Date | 2017-01-10 04:00 +0100 |
| Message-ID | <sXUPf-3V1-5@gated-at.bofh.it> |
| In reply to | #1554417 |
On 2017年01月09日 23:21, Bhumika Goyal wrote:
> Declare target_core_fabric_ops strucrues as const as they are only
> passed as an argument to the functions target_register_template and
> target_unregister_template. The arguments are of type const struct
> target_core_fabric_ops *, so target_core_fabric_ops structures having
> this property can be declared const.
> Done using Coccinelle:
>
> @r disable optional_qualifier@
> identifier i;
> position p;
> @@
> static struct target_core_fabric_ops i@p={...};
>
> @ok@
> position p;
> identifier r.i;
> @@
> (
> target_register_template(&i@p)
> |
> target_unregister_template(&i@p)
> )
> @bad@
> position p!={r.p,ok.p};
> identifier r.i;
> @@
> i@p
>
> @depends on !bad disable optional_qualifier@
> identifier r.i;
> @@
> +const
> struct target_core_fabric_ops i;
>
> File size before: drivers/vhost/scsi.o
> text data bss dec hex filename
> 18063 2985 40 21088 5260 drivers/vhost/scsi.o
>
> File size after: drivers/vhost/scsi.o
> text data bss dec hex filename
> 18479 2601 40 21120 5280 drivers/vhost/scsi.o
>
> Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
> ---
> drivers/vhost/scsi.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/vhost/scsi.c b/drivers/vhost/scsi.c
> index 253310c..620366d 100644
> --- a/drivers/vhost/scsi.c
> +++ b/drivers/vhost/scsi.c
> @@ -2087,7 +2087,7 @@ static void vhost_scsi_drop_tport(struct se_wwn *wwn)
> NULL,
> };
>
> -static struct target_core_fabric_ops vhost_scsi_ops = {
> +static const struct target_core_fabric_ops vhost_scsi_ops = {
> .module = THIS_MODULE,
> .name = "vhost",
> .get_fabric_name = vhost_scsi_get_fabric_name,
Acked-by: Jason Wang <jasowang@redhat.com>
[toc] | [prev] | [next] | [standalone]
| From | "Michael S. Tsirkin" <mst@redhat.com> |
|---|---|
| Date | 2017-01-10 06:20 +0100 |
| Message-ID | <sXX0K-5zU-3@gated-at.bofh.it> |
| In reply to | #1554417 |
On Mon, Jan 09, 2017 at 08:51:02PM +0530, Bhumika Goyal wrote:
> Declare target_core_fabric_ops strucrues as const as they are only
> passed as an argument to the functions target_register_template and
> target_unregister_template. The arguments are of type const struct
> target_core_fabric_ops *, so target_core_fabric_ops structures having
> this property can be declared const.
> Done using Coccinelle:
>
> @r disable optional_qualifier@
> identifier i;
> position p;
> @@
> static struct target_core_fabric_ops i@p={...};
>
> @ok@
> position p;
> identifier r.i;
> @@
> (
> target_register_template(&i@p)
> |
> target_unregister_template(&i@p)
> )
> @bad@
> position p!={r.p,ok.p};
> identifier r.i;
> @@
> i@p
>
> @depends on !bad disable optional_qualifier@
> identifier r.i;
> @@
> +const
> struct target_core_fabric_ops i;
>
> File size before: drivers/vhost/scsi.o
> text data bss dec hex filename
> 18063 2985 40 21088 5260 drivers/vhost/scsi.o
>
> File size after: drivers/vhost/scsi.o
> text data bss dec hex filename
> 18479 2601 40 21120 5280 drivers/vhost/scsi.o
What are these numbers trying to prove?
> Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
> ---
> drivers/vhost/scsi.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/vhost/scsi.c b/drivers/vhost/scsi.c
> index 253310c..620366d 100644
> --- a/drivers/vhost/scsi.c
> +++ b/drivers/vhost/scsi.c
> @@ -2087,7 +2087,7 @@ static void vhost_scsi_drop_tport(struct se_wwn *wwn)
> NULL,
> };
>
> -static struct target_core_fabric_ops vhost_scsi_ops = {
> +static const struct target_core_fabric_ops vhost_scsi_ops = {
> .module = THIS_MODULE,
> .name = "vhost",
> .get_fabric_name = vhost_scsi_get_fabric_name,
If it can be const it probably should ...
> --
> 1.9.1
[toc] | [prev] | [next] | [standalone]
| From | Bhumika Goyal <bhumirks@gmail.com> |
|---|---|
| Date | 2017-01-10 13:50 +0100 |
| Message-ID | <sY42d-1nr-3@gated-at.bofh.it> |
| In reply to | #1554926 |
On Tue, Jan 10, 2017 at 10:41 AM, Michael S. Tsirkin <mst@redhat.com> wrote:
> On Mon, Jan 09, 2017 at 08:51:02PM +0530, Bhumika Goyal wrote:
>> Declare target_core_fabric_ops strucrues as const as they are only
>> passed as an argument to the functions target_register_template and
>> target_unregister_template. The arguments are of type const struct
>> target_core_fabric_ops *, so target_core_fabric_ops structures having
>> this property can be declared const.
>> Done using Coccinelle:
>>
>> @r disable optional_qualifier@
>> identifier i;
>> position p;
>> @@
>> static struct target_core_fabric_ops i@p={...};
>>
>> @ok@
>> position p;
>> identifier r.i;
>> @@
>> (
>> target_register_template(&i@p)
>> |
>> target_unregister_template(&i@p)
>> )
>> @bad@
>> position p!={r.p,ok.p};
>> identifier r.i;
>> @@
>> i@p
>>
>> @depends on !bad disable optional_qualifier@
>> identifier r.i;
>> @@
>> +const
>> struct target_core_fabric_ops i;
>>
>> File size before: drivers/vhost/scsi.o
>> text data bss dec hex filename
>> 18063 2985 40 21088 5260 drivers/vhost/scsi.o
>>
>> File size after: drivers/vhost/scsi.o
>> text data bss dec hex filename
>> 18479 2601 40 21120 5280 drivers/vhost/scsi.o
>
> What are these numbers trying to prove?
>
These numbers show that adding const has decreased the size of the
data segment and increased the size of the text segment, suggesting
that the changed code has been compiled and the const annotation has
had an effect.
Thanks,
Bhumika
>
>> Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
>> ---
>> drivers/vhost/scsi.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/vhost/scsi.c b/drivers/vhost/scsi.c
>> index 253310c..620366d 100644
>> --- a/drivers/vhost/scsi.c
>> +++ b/drivers/vhost/scsi.c
>> @@ -2087,7 +2087,7 @@ static void vhost_scsi_drop_tport(struct se_wwn *wwn)
>> NULL,
>> };
>>
>> -static struct target_core_fabric_ops vhost_scsi_ops = {
>> +static const struct target_core_fabric_ops vhost_scsi_ops = {
>> .module = THIS_MODULE,
>> .name = "vhost",
>> .get_fabric_name = vhost_scsi_get_fabric_name,
>
> If it can be const it probably should ...
>
>> --
>> 1.9.1
[toc] | [prev] | [next] | [standalone]
| From | "Michael S. Tsirkin" <mst@redhat.com> |
|---|---|
| Date | 2017-01-10 16:20 +0100 |
| Message-ID | <sY6no-2ZC-33@gated-at.bofh.it> |
| In reply to | #1555225 |
On Tue, Jan 10, 2017 at 06:11:25PM +0530, Bhumika Goyal wrote:
> On Tue, Jan 10, 2017 at 10:41 AM, Michael S. Tsirkin <mst@redhat.com> wrote:
> > On Mon, Jan 09, 2017 at 08:51:02PM +0530, Bhumika Goyal wrote:
> >> Declare target_core_fabric_ops strucrues as const as they are only
> >> passed as an argument to the functions target_register_template and
> >> target_unregister_template. The arguments are of type const struct
> >> target_core_fabric_ops *, so target_core_fabric_ops structures having
> >> this property can be declared const.
> >> Done using Coccinelle:
> >>
> >> @r disable optional_qualifier@
> >> identifier i;
> >> position p;
> >> @@
> >> static struct target_core_fabric_ops i@p={...};
> >>
> >> @ok@
> >> position p;
> >> identifier r.i;
> >> @@
> >> (
> >> target_register_template(&i@p)
> >> |
> >> target_unregister_template(&i@p)
> >> )
> >> @bad@
> >> position p!={r.p,ok.p};
> >> identifier r.i;
> >> @@
> >> i@p
> >>
> >> @depends on !bad disable optional_qualifier@
> >> identifier r.i;
> >> @@
> >> +const
> >> struct target_core_fabric_ops i;
> >>
> >> File size before: drivers/vhost/scsi.o
> >> text data bss dec hex filename
> >> 18063 2985 40 21088 5260 drivers/vhost/scsi.o
> >>
> >> File size after: drivers/vhost/scsi.o
> >> text data bss dec hex filename
> >> 18479 2601 40 21120 5280 drivers/vhost/scsi.o
> >
> > What are these numbers trying to prove?
> >
>
> These numbers show that adding const has decreased the size of the
> data segment and increased the size of the text segment, suggesting
> that the changed code has been compiled and the const annotation has
> had an effect.
>
> Thanks,
> Bhumika
I wonder why there's a net increase in memory consumption though.
> >
> >> Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
> >> ---
> >> drivers/vhost/scsi.c | 2 +-
> >> 1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/vhost/scsi.c b/drivers/vhost/scsi.c
> >> index 253310c..620366d 100644
> >> --- a/drivers/vhost/scsi.c
> >> +++ b/drivers/vhost/scsi.c
> >> @@ -2087,7 +2087,7 @@ static void vhost_scsi_drop_tport(struct se_wwn *wwn)
> >> NULL,
> >> };
> >>
> >> -static struct target_core_fabric_ops vhost_scsi_ops = {
> >> +static const struct target_core_fabric_ops vhost_scsi_ops = {
> >> .module = THIS_MODULE,
> >> .name = "vhost",
> >> .get_fabric_name = vhost_scsi_get_fabric_name,
> >
> > If it can be const it probably should ...
> >
> >> --
> >> 1.9.1
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web