diff mbox series

file-posix: check the use_lock

Message ID 1607077703-32344-1-git-send-email-fengli@smartx.com (mailing list archive)
State New, archived
Headers show
Series file-posix: check the use_lock | expand

Commit Message

Li Feng Dec. 4, 2020, 10:28 a.m. UTC
When setting the file.locking = false, we shouldn't set the lock.

Signed-off-by: Li Feng <fengli@smartx.com>
---
 block/file-posix.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Kevin Wolf Dec. 4, 2020, 10:40 a.m. UTC | #1
Am 04.12.2020 um 11:28 hat Li Feng geschrieben:
> When setting the file.locking = false, we shouldn't set the lock.
> 
> Signed-off-by: Li Feng <fengli@smartx.com>

This looks right to me, but can you add a test for this scenario to
iotest 182? This would both demonstrate the effect of the bug (I think
it would be that files are locked after reopen even with locking=off?)
and make sure that we won't have a regression later. Mentioning the
effect in the commit message would be good, too.

Kevin

>  block/file-posix.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/block/file-posix.c b/block/file-posix.c
> index d5fd1dbcd2..806764f7e3 100644
> --- a/block/file-posix.c
> +++ b/block/file-posix.c
> @@ -3104,7 +3104,7 @@ static int raw_check_perm(BlockDriverState *bs, uint64_t perm, uint64_t shared,
>      }
>  
>      /* Copy locks to the new fd */
> -    if (s->perm_change_fd) {
> +    if (s->perm_change_fd && s->use_lock) {
>          ret = raw_apply_lock_bytes(NULL, s->perm_change_fd, perm, ~shared,
>                                     false, errp);
>          if (ret < 0) {
> -- 
> 2.24.3
>
Li Feng Dec. 4, 2020, 10:55 a.m. UTC | #2
Hi Kevin,
Thanks for your reply.

In my scenario, my NFS server doesn't support the file lock.
And when I set the file.locking = false, the Qemu still reports:
qemu-system-x86_64: -drive
file=/tmp/nfs/a,format=raw,cache=none,aio=native,if=none,id=drive-virtio-disk1,file.locking=on:
Failed to lock byte 100

I will look at the iotest 182 and try to add a test.

Thanks,
Feng Li

Kevin Wolf <kwolf@redhat.com> 于2020年12月4日周五 下午6:40写道:
>
> Am 04.12.2020 um 11:28 hat Li Feng geschrieben:
> > When setting the file.locking = false, we shouldn't set the lock.
> >
> > Signed-off-by: Li Feng <fengli@smartx.com>
>
> This looks right to me, but can you add a test for this scenario to
> iotest 182? This would both demonstrate the effect of the bug (I think
> it would be that files are locked after reopen even with locking=off?)
> and make sure that we won't have a regression later. Mentioning the
> effect in the commit message would be good, too.
>
> Kevin
>
> >  block/file-posix.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/block/file-posix.c b/block/file-posix.c
> > index d5fd1dbcd2..806764f7e3 100644
> > --- a/block/file-posix.c
> > +++ b/block/file-posix.c
> > @@ -3104,7 +3104,7 @@ static int raw_check_perm(BlockDriverState *bs, uint64_t perm, uint64_t shared,
> >      }
> >
> >      /* Copy locks to the new fd */
> > -    if (s->perm_change_fd) {
> > +    if (s->perm_change_fd && s->use_lock) {
> >          ret = raw_apply_lock_bytes(NULL, s->perm_change_fd, perm, ~shared,
> >                                     false, errp);
> >          if (ret < 0) {
> > --
> > 2.24.3
> >
>
Feng Li Dec. 7, 2020, 10:50 a.m. UTC | #3
Hi Kevin,

I have read the 182 test, and I'm very confused about the test.
I'm not familiar with the permissions and locks in the qemu.
Could you give me more tips about how to complete the test?

Li Feng <fengli@smartx.com> 于2020年12月4日周五 下午6:55写道:
>
> Hi Kevin,
> Thanks for your reply.
>
> In my scenario, my NFS server doesn't support the file lock.
> And when I set the file.locking = false, the Qemu still reports:
> qemu-system-x86_64: -drive
> file=/tmp/nfs/a,format=raw,cache=none,aio=native,if=none,id=drive-virtio-disk1,file.locking=on:
> Failed to lock byte 100
>
> I will look at the iotest 182 and try to add a test.
>
> Thanks,
> Feng Li
>
> Kevin Wolf <kwolf@redhat.com> 于2020年12月4日周五 下午6:40写道:
> >
> > Am 04.12.2020 um 11:28 hat Li Feng geschrieben:
> > > When setting the file.locking = false, we shouldn't set the lock.
> > >
> > > Signed-off-by: Li Feng <fengli@smartx.com>
> >
> > This looks right to me, but can you add a test for this scenario to
> > iotest 182? This would both demonstrate the effect of the bug (I think
> > it would be that files are locked after reopen even with locking=off?)
> > and make sure that we won't have a regression later. Mentioning the
> > effect in the commit message would be good, too.
> >
> > Kevin
> >
> > >  block/file-posix.c | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/block/file-posix.c b/block/file-posix.c
> > > index d5fd1dbcd2..806764f7e3 100644
> > > --- a/block/file-posix.c
> > > +++ b/block/file-posix.c
> > > @@ -3104,7 +3104,7 @@ static int raw_check_perm(BlockDriverState *bs, uint64_t perm, uint64_t shared,
> > >      }
> > >
> > >      /* Copy locks to the new fd */
> > > -    if (s->perm_change_fd) {
> > > +    if (s->perm_change_fd && s->use_lock) {
> > >          ret = raw_apply_lock_bytes(NULL, s->perm_change_fd, perm, ~shared,
> > >                                     false, errp);
> > >          if (ret < 0) {
> > > --
> > > 2.24.3
> > >
> >
Kevin Wolf Dec. 7, 2020, 11:17 a.m. UTC | #4
Am 07.12.2020 um 11:50 hat Feng Li geschrieben:
> Hi Kevin,
> 
> I have read the 182 test, and I'm very confused about the test.
> I'm not familiar with the permissions and locks in the qemu.
> Could you give me more tips about how to complete the test?

Hm, actually, to produce a failure, we would have to have a filesystem
in the host that doesn't support locks. I don't even know how to get
such a filesystem manually, and it's probably completely impossible in a
test case without root permissions.

So maybe just add a more detailed description of the bug to the commit
message, and we'll have to apply it without a test.

Kevin

> Li Feng <fengli@smartx.com> 于2020年12月4日周五 下午6:55写道:
> >
> > Hi Kevin,
> > Thanks for your reply.
> >
> > In my scenario, my NFS server doesn't support the file lock.
> > And when I set the file.locking = false, the Qemu still reports:
> > qemu-system-x86_64: -drive
> > file=/tmp/nfs/a,format=raw,cache=none,aio=native,if=none,id=drive-virtio-disk1,file.locking=on:
> > Failed to lock byte 100
> >
> > I will look at the iotest 182 and try to add a test.
> >
> > Thanks,
> > Feng Li
> >
> > Kevin Wolf <kwolf@redhat.com> 于2020年12月4日周五 下午6:40写道:
> > >
> > > Am 04.12.2020 um 11:28 hat Li Feng geschrieben:
> > > > When setting the file.locking = false, we shouldn't set the lock.
> > > >
> > > > Signed-off-by: Li Feng <fengli@smartx.com>
> > >
> > > This looks right to me, but can you add a test for this scenario to
> > > iotest 182? This would both demonstrate the effect of the bug (I think
> > > it would be that files are locked after reopen even with locking=off?)
> > > and make sure that we won't have a regression later. Mentioning the
> > > effect in the commit message would be good, too.
> > >
> > > Kevin
> > >
> > > >  block/file-posix.c | 2 +-
> > > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > >
> > > > diff --git a/block/file-posix.c b/block/file-posix.c
> > > > index d5fd1dbcd2..806764f7e3 100644
> > > > --- a/block/file-posix.c
> > > > +++ b/block/file-posix.c
> > > > @@ -3104,7 +3104,7 @@ static int raw_check_perm(BlockDriverState *bs, uint64_t perm, uint64_t shared,
> > > >      }
> > > >
> > > >      /* Copy locks to the new fd */
> > > > -    if (s->perm_change_fd) {
> > > > +    if (s->perm_change_fd && s->use_lock) {
> > > >          ret = raw_apply_lock_bytes(NULL, s->perm_change_fd, perm, ~shared,
> > > >                                     false, errp);
> > > >          if (ret < 0) {
> > > > --
> > > > 2.24.3
> > > >
> > >
>
Li Feng Dec. 7, 2020, 11:29 a.m. UTC | #5
Hi Kevin,

OK, thanks for your reply, I will send out the v2 patch.

Thanks,
Feng Li

Kevin Wolf <kwolf@redhat.com> 于2020年12月7日周一 下午7:17写道:
>
> Am 07.12.2020 um 11:50 hat Feng Li geschrieben:
> > Hi Kevin,
> >
> > I have read the 182 test, and I'm very confused about the test.
> > I'm not familiar with the permissions and locks in the qemu.
> > Could you give me more tips about how to complete the test?
>
> Hm, actually, to produce a failure, we would have to have a filesystem
> in the host that doesn't support locks. I don't even know how to get
> such a filesystem manually, and it's probably completely impossible in a
> test case without root permissions.
>
> So maybe just add a more detailed description of the bug to the commit
> message, and we'll have to apply it without a test.
>
> Kevin
>
> > Li Feng <fengli@smartx.com> 于2020年12月4日周五 下午6:55写道:
> > >
> > > Hi Kevin,
> > > Thanks for your reply.
> > >
> > > In my scenario, my NFS server doesn't support the file lock.
> > > And when I set the file.locking = false, the Qemu still reports:
> > > qemu-system-x86_64: -drive
> > > file=/tmp/nfs/a,format=raw,cache=none,aio=native,if=none,id=drive-virtio-disk1,file.locking=on:
> > > Failed to lock byte 100
> > >
> > > I will look at the iotest 182 and try to add a test.
> > >
> > > Thanks,
> > > Feng Li
> > >
> > > Kevin Wolf <kwolf@redhat.com> 于2020年12月4日周五 下午6:40写道:
> > > >
> > > > Am 04.12.2020 um 11:28 hat Li Feng geschrieben:
> > > > > When setting the file.locking = false, we shouldn't set the lock.
> > > > >
> > > > > Signed-off-by: Li Feng <fengli@smartx.com>
> > > >
> > > > This looks right to me, but can you add a test for this scenario to
> > > > iotest 182? This would both demonstrate the effect of the bug (I think
> > > > it would be that files are locked after reopen even with locking=off?)
> > > > and make sure that we won't have a regression later. Mentioning the
> > > > effect in the commit message would be good, too.
> > > >
> > > > Kevin
> > > >
> > > > >  block/file-posix.c | 2 +-
> > > > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > > >
> > > > > diff --git a/block/file-posix.c b/block/file-posix.c
> > > > > index d5fd1dbcd2..806764f7e3 100644
> > > > > --- a/block/file-posix.c
> > > > > +++ b/block/file-posix.c
> > > > > @@ -3104,7 +3104,7 @@ static int raw_check_perm(BlockDriverState *bs, uint64_t perm, uint64_t shared,
> > > > >      }
> > > > >
> > > > >      /* Copy locks to the new fd */
> > > > > -    if (s->perm_change_fd) {
> > > > > +    if (s->perm_change_fd && s->use_lock) {
> > > > >          ret = raw_apply_lock_bytes(NULL, s->perm_change_fd, perm, ~shared,
> > > > >                                     false, errp);
> > > > >          if (ret < 0) {
> > > > > --
> > > > > 2.24.3
> > > > >
> > > >
> >
>
diff mbox series

Patch

diff --git a/block/file-posix.c b/block/file-posix.c
index d5fd1dbcd2..806764f7e3 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -3104,7 +3104,7 @@  static int raw_check_perm(BlockDriverState *bs, uint64_t perm, uint64_t shared,
     }
 
     /* Copy locks to the new fd */
-    if (s->perm_change_fd) {
+    if (s->perm_change_fd && s->use_lock) {
         ret = raw_apply_lock_bytes(NULL, s->perm_change_fd, perm, ~shared,
                                    false, errp);
         if (ret < 0) {