Re: [PATCH] t_ofd_locks: fix initialization sequence

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]



Hi,

Sorry for the late reply.

On Thu, Jul 6, 2023 at 4:54 PM stsp <stsp2@xxxxxxxxx> wrote:
>
>
> 06.07.2023 13:41, Murphy Zhou пишет:
> > Signed-off-by: Stas Sergeev <stsp2@xxxxxxxxx>
> > ---
> >   src/t_ofd_locks.c | 73 ++++++++++++++++++++++++++++++-----------------
> >   1 file changed, 47 insertions(+), 26 deletions(-)
> >
> > diff --git a/src/t_ofd_locks.c b/src/t_ofd_locks.c
> > index e77f2659..daa6f96c 100644
> > --- a/src/t_ofd_locks.c
> > +++ b/src/t_ofd_locks.c
> > @@ -297,6 +297,7 @@ int main(int argc, char **argv)
> >                        semid = semget(semkey, 2, IPC_CREAT|IPC_EXCL);
> >                        if (semid < 0 && errno == EEXIST) {
> >                                /* remove sem set after one round of test */
> > +                             semid = semget(semkey, 2, IPC_CREAT);
> >                                if (semctl(semid, 2, IPC_RMID, semu) == -1)
> > Good catch. This RMID is useless unless we have got the existing
> > semaphore. According to SEMGET(2), seems should be:
> >
> >      semid = semget(semkey, 2, 0);
> >
> > to obtain an existing semaphore?
>
> Yes, I just wanted to avoid the purely
> theoretical condition when someone
> else removed this sem right before we
> did second semget(). So I added IPC_CREAT
> just as a safety measure.
> Should I remove it?
>
> > The while loop makes sure we get the semaphore before continuing
> > the test. It's been some time, I'm not sure but now I really can't see
> > this really hurts.
> What while loop do you mean and what
> doesn't hurt? Does the rest of the patch
> look ok?

I mean the do-while loop ensures a new semaphore is created.

And in most of the test scenarios, this program runs only once and
there is no semaphore left behind, unless debugging this program
itself.

So I don't  think there are any race conditions being opened up.

Much appreciated!

Thanks,
Murphy





[Index of Archives]     [Linux Filesystems Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux