Am 28.02.2020 um 08:30 hat Chenqun (kuhn) geschrieben:
> >-----Original Message-----
> >From: Kevin Wolf [mailto:kw...@redhat.com]
> >Sent: Thursday, February 27, 2020 6:31 PM
> >To: Chenqun (kuhn) <kuhn.chen...@huawei.com>
> >Cc: qemu-devel@nongnu.org; qemu-triv...@nongnu.org;
> >peter.mayd...@linaro.org; Zhanghailiang <zhang.zhanghaili...@huawei.com>;
> >Euler Robot <euler.ro...@huawei.com>; Ronnie Sahlberg
> ><ronniesahlb...@gmail.com>; Paolo Bonzini <pbonz...@redhat.com>; Peter
> >Lieven <p...@kamp.de>; Max Reitz <mre...@redhat.com>
> >Subject: Re: [PATCH v2 02/13] block/iscsi:Remove redundant statement in
> >iscsi_open()
> >
> >Am 27.02.2020 um 02:49 hat Chenqun (kuhn) geschrieben:
> >> >-----Original Message-----
> >> >From: Kevin Wolf [mailto:kw...@redhat.com]
> >> >Sent: Wednesday, February 26, 2020 5:55 PM
> >> >To: Chenqun (kuhn) <kuhn.chen...@huawei.com>
> >> >Cc: qemu-devel@nongnu.org; qemu-triv...@nongnu.org;
> >> >peter.mayd...@linaro.org; Zhanghailiang
> >> ><zhang.zhanghaili...@huawei.com>; Euler Robot
> >> ><euler.ro...@huawei.com>; Ronnie Sahlberg
> ><ronniesahlb...@gmail.com>;
> >> >Paolo Bonzini <pbonz...@redhat.com>; Peter Lieven <p...@kamp.de>; Max
> >> >Reitz <mre...@redhat.com>
> >> >Subject: Re: [PATCH v2 02/13] block/iscsi:Remove redundant statement
> >> >in
> >> >iscsi_open()
> >> >
> >> >Am 26.02.2020 um 09:46 hat kuhn.chen...@huawei.com geschrieben:
> >> >> From: Chen Qun <kuhn.chen...@huawei.com>
> >> >>
> >> >> Clang static code analyzer show warning:
> >> >>   block/iscsi.c:1920:9: warning: Value stored to 'flags' is never read
> >> >>         flags &= ~BDRV_O_RDWR;
> >> >>         ^        ~~~~~~~~~~~~
> >> >>
> >> >> Reported-by: Euler Robot <euler.ro...@huawei.com>
> >> >> Signed-off-by: Chen Qun <kuhn.chen...@huawei.com>
> >> >
> >> >Hmm, I'm not so sure about this one because if we remove the line,
> >> >flags will be inconsistent with bs->open_flags. It feels like setting
> >> >a trap for anyone who wants to add code using flags in the future.
> >> Hi Kevin,
> >> I find it exists since 8f3bf50d34037266.   :  )
> >
> >Yes, it has existed from the start with auto-read-only.
> >
> >> It's not a big deal,  just upset clang static code analyzer.
> >> As you said, it could be a trap for the future.
> >
> >What's interesting is that we do have one user of the flags later in the 
> >function,
> >but it uses bs->open_flags instead:
> >
> >    ret = iscsi_allocmap_init(iscsilun, bs->open_flags);
> >
> >Maybe this should be using flags? (The value of the bits we're interested in 
> >is
> >the same, but when flags is passed as a parameter, I would expect it to be
> >used.)
> >
> Hi Kevin,
> I have a question: are 'flags' exactly the same as 'bs-> open_flags'? 
> In the function bdrv_open_common() at block.c file,  the existence of 
> statement( open_flags = bdrv_open_flags(bs, bs->open_flags); ) makes them a 
> little different.
> Will this place affect them inconsistently ?

Not exactly the same, that's why I said "value of the bits we're
interested in is the same". bdrv_open_flags() basically just filters out
things that are handled by the generic block layer and none of the block
driver's business.

To be precise, iscsi_allocmap_init() only checks BDRV_O_NOCACHE, which
is the same in both.

> Is it safer if we assign bs-> open_flags to flags?

This would add back the flags that we consciously filtered out before,
so I would say no.

Kevin

> Modify just likeļ¼š
> @@ -1917,7 +1917,7 @@ static int iscsi_open(BlockDriverState *bs, QDict 
> *options, int flags,
>          if (ret < 0) {
>              goto out;
>          }
> -        flags &= ~BDRV_O_RDWR;
> +        flags = bs->open_flags;
>      }
> 
>      iscsi_readcapacity_sync(iscsilun, &local_err);
> @@ -2002,7 +2002,7 @@ static int iscsi_open(BlockDriverState *bs, QDict 
> *options, int flags,
>          iscsilun->cluster_size = iscsilun->bl.opt_unmap_gran *
>              iscsilun->block_size;
>          if (iscsilun->lbprz) {
> -            ret = iscsi_allocmap_init(iscsilun, bs->open_flags);
> +            ret = iscsi_allocmap_init(iscsilun, flags);
>          }
>      }
> 
> Thanks.
> 
> 
> 


Reply via email to