Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-104

Lustre grants flock exclusive locks on two file descriptors for the same file

Details

    • Bug
    • Resolution: Fixed
    • Blocker
    • Lustre 2.1.0
    • Lustre 2.1.0
    • None
    • 3
    • 22,660
    • 5058

    Description

      Lustre grants flock exclusive locks on two file descriptors for the same
      file in the same process. However, the second flock SHOULD fail.

      Fortunately, the VFS already has the correct behavior. And since we are
      already calling the flock_lock_file_wait() or posix_lock_file_wait() VFS
      calls, we just need to record that return code and return it in
      ll_file_lock().

      This patch was already landed on 1.8, needs to land on master.

      Attachments

        Activity

          [LU-104] Lustre grants flock exclusive locks on two file descriptors for the same file

          Integrated in lustre-master » x86_64,client,el6,inkernel #101
          LU-104 Properly address ownership of posix and flock locks

          Oleg Drokin : 3bb8d1b9656994b0313cdba6ad8eeb7b84f5ee9f
          Files :

          • lustre/ldlm/ldlm_flock.c
          • lustre/tests/sanity.sh
          • lustre/ptlrpc/wiretest.c
          • lustre/ldlm/ldlm_request.c
          • lustre/ptlrpc/pack_generic.c
          • lustre/ldlm/ldlm_lock.c
          • lustre/ldlm/ldlm_lockd.c
          • lustre/tests/Makefile.am
          • lustre/utils/wiretest.c
          • lustre/include/lustre/lustre_idl.h
          • lustre/ldlm/ldlm_extent.c
          • lustre/llite/file.c
          • lustre/tests/flocks_test.c
          • lustre/ldlm/ldlm_plain.c
          • lustre/utils/wirecheck.c
          • lustre/include/lustre_dlm.h
          • lustre/ldlm/ldlm_inodebits.c
          • lustre/ldlm/ldlm_internal.h
          • lustre/tests/flock_test.c
          hudson Build Master (Inactive) added a comment - Integrated in lustre-master » x86_64,client,el6,inkernel #101 LU-104 Properly address ownership of posix and flock locks Oleg Drokin : 3bb8d1b9656994b0313cdba6ad8eeb7b84f5ee9f Files : lustre/ldlm/ldlm_flock.c lustre/tests/sanity.sh lustre/ptlrpc/wiretest.c lustre/ldlm/ldlm_request.c lustre/ptlrpc/pack_generic.c lustre/ldlm/ldlm_lock.c lustre/ldlm/ldlm_lockd.c lustre/tests/Makefile.am lustre/utils/wiretest.c lustre/include/lustre/lustre_idl.h lustre/ldlm/ldlm_extent.c lustre/llite/file.c lustre/tests/flocks_test.c lustre/ldlm/ldlm_plain.c lustre/utils/wirecheck.c lustre/include/lustre_dlm.h lustre/ldlm/ldlm_inodebits.c lustre/ldlm/ldlm_internal.h lustre/tests/flock_test.c

          Integrated in lustre-master » x86_64,client,el5,ofa #101
          LU-104 Properly address ownership of posix and flock locks

          Oleg Drokin : 3bb8d1b9656994b0313cdba6ad8eeb7b84f5ee9f
          Files :

          • lustre/tests/Makefile.am
          • lustre/tests/sanity.sh
          • lustre/tests/flock_test.c
          • lustre/ldlm/ldlm_extent.c
          • lustre/utils/wiretest.c
          • lustre/ldlm/ldlm_flock.c
          • lustre/include/lustre_dlm.h
          • lustre/ldlm/ldlm_plain.c
          • lustre/ldlm/ldlm_lock.c
          • lustre/include/lustre/lustre_idl.h
          • lustre/ptlrpc/pack_generic.c
          • lustre/ldlm/ldlm_lockd.c
          • lustre/tests/flocks_test.c
          • lustre/ldlm/ldlm_inodebits.c
          • lustre/ldlm/ldlm_internal.h
          • lustre/ldlm/ldlm_request.c
          • lustre/ptlrpc/wiretest.c
          • lustre/utils/wirecheck.c
          • lustre/llite/file.c
          hudson Build Master (Inactive) added a comment - Integrated in lustre-master » x86_64,client,el5,ofa #101 LU-104 Properly address ownership of posix and flock locks Oleg Drokin : 3bb8d1b9656994b0313cdba6ad8eeb7b84f5ee9f Files : lustre/tests/Makefile.am lustre/tests/sanity.sh lustre/tests/flock_test.c lustre/ldlm/ldlm_extent.c lustre/utils/wiretest.c lustre/ldlm/ldlm_flock.c lustre/include/lustre_dlm.h lustre/ldlm/ldlm_plain.c lustre/ldlm/ldlm_lock.c lustre/include/lustre/lustre_idl.h lustre/ptlrpc/pack_generic.c lustre/ldlm/ldlm_lockd.c lustre/tests/flocks_test.c lustre/ldlm/ldlm_inodebits.c lustre/ldlm/ldlm_internal.h lustre/ldlm/ldlm_request.c lustre/ptlrpc/wiretest.c lustre/utils/wirecheck.c lustre/llite/file.c

          Integrated in lustre-master » i686,client,el6,inkernel #101
          LU-104 Properly address ownership of posix and flock locks

          Oleg Drokin : 3bb8d1b9656994b0313cdba6ad8eeb7b84f5ee9f
          Files :

          • lustre/tests/flocks_test.c
          • lustre/tests/Makefile.am
          • lustre/include/lustre/lustre_idl.h
          • lustre/include/lustre_dlm.h
          • lustre/ldlm/ldlm_internal.h
          • lustre/ldlm/ldlm_plain.c
          • lustre/utils/wiretest.c
          • lustre/ldlm/ldlm_extent.c
          • lustre/llite/file.c
          • lustre/ptlrpc/pack_generic.c
          • lustre/utils/wirecheck.c
          • lustre/ldlm/ldlm_lockd.c
          • lustre/ptlrpc/wiretest.c
          • lustre/ldlm/ldlm_request.c
          • lustre/ldlm/ldlm_flock.c
          • lustre/tests/sanity.sh
          • lustre/tests/flock_test.c
          • lustre/ldlm/ldlm_lock.c
          • lustre/ldlm/ldlm_inodebits.c
          hudson Build Master (Inactive) added a comment - Integrated in lustre-master » i686,client,el6,inkernel #101 LU-104 Properly address ownership of posix and flock locks Oleg Drokin : 3bb8d1b9656994b0313cdba6ad8eeb7b84f5ee9f Files : lustre/tests/flocks_test.c lustre/tests/Makefile.am lustre/include/lustre/lustre_idl.h lustre/include/lustre_dlm.h lustre/ldlm/ldlm_internal.h lustre/ldlm/ldlm_plain.c lustre/utils/wiretest.c lustre/ldlm/ldlm_extent.c lustre/llite/file.c lustre/ptlrpc/pack_generic.c lustre/utils/wirecheck.c lustre/ldlm/ldlm_lockd.c lustre/ptlrpc/wiretest.c lustre/ldlm/ldlm_request.c lustre/ldlm/ldlm_flock.c lustre/tests/sanity.sh lustre/tests/flock_test.c lustre/ldlm/ldlm_lock.c lustre/ldlm/ldlm_inodebits.c

          Integrated in lustre-master » x86_64,client,ubuntu1004,inkernel #101
          LU-104 Properly address ownership of posix and flock locks

          Oleg Drokin : 3bb8d1b9656994b0313cdba6ad8eeb7b84f5ee9f
          Files :

          • lustre/ldlm/ldlm_lock.c
          • lustre/utils/wirecheck.c
          • lustre/llite/file.c
          • lustre/ldlm/ldlm_internal.h
          • lustre/tests/Makefile.am
          • lustre/ldlm/ldlm_extent.c
          • lustre/include/lustre_dlm.h
          • lustre/ptlrpc/pack_generic.c
          • lustre/ldlm/ldlm_plain.c
          • lustre/utils/wiretest.c
          • lustre/include/lustre/lustre_idl.h
          • lustre/ldlm/ldlm_lockd.c
          • lustre/tests/flocks_test.c
          • lustre/ldlm/ldlm_flock.c
          • lustre/tests/sanity.sh
          • lustre/ptlrpc/wiretest.c
          • lustre/tests/flock_test.c
          • lustre/ldlm/ldlm_inodebits.c
          • lustre/ldlm/ldlm_request.c
          hudson Build Master (Inactive) added a comment - Integrated in lustre-master » x86_64,client,ubuntu1004,inkernel #101 LU-104 Properly address ownership of posix and flock locks Oleg Drokin : 3bb8d1b9656994b0313cdba6ad8eeb7b84f5ee9f Files : lustre/ldlm/ldlm_lock.c lustre/utils/wirecheck.c lustre/llite/file.c lustre/ldlm/ldlm_internal.h lustre/tests/Makefile.am lustre/ldlm/ldlm_extent.c lustre/include/lustre_dlm.h lustre/ptlrpc/pack_generic.c lustre/ldlm/ldlm_plain.c lustre/utils/wiretest.c lustre/include/lustre/lustre_idl.h lustre/ldlm/ldlm_lockd.c lustre/tests/flocks_test.c lustre/ldlm/ldlm_flock.c lustre/tests/sanity.sh lustre/ptlrpc/wiretest.c lustre/tests/flock_test.c lustre/ldlm/ldlm_inodebits.c lustre/ldlm/ldlm_request.c

          Integrated in lustre-master » x86_64,server,el6,inkernel #101
          LU-104 Properly address ownership of posix and flock locks

          Oleg Drokin : 3bb8d1b9656994b0313cdba6ad8eeb7b84f5ee9f
          Files :

          • lustre/utils/wiretest.c
          • lustre/tests/flocks_test.c
          • lustre/ldlm/ldlm_plain.c
          • lustre/ldlm/ldlm_request.c
          • lustre/ldlm/ldlm_inodebits.c
          • lustre/include/lustre/lustre_idl.h
          • lustre/utils/wirecheck.c
          • lustre/tests/flock_test.c
          • lustre/ldlm/ldlm_flock.c
          • lustre/ldlm/ldlm_lock.c
          • lustre/ldlm/ldlm_extent.c
          • lustre/tests/sanity.sh
          • lustre/ldlm/ldlm_internal.h
          • lustre/tests/Makefile.am
          • lustre/ptlrpc/pack_generic.c
          • lustre/ldlm/ldlm_lockd.c
          • lustre/ptlrpc/wiretest.c
          • lustre/include/lustre_dlm.h
          • lustre/llite/file.c
          hudson Build Master (Inactive) added a comment - Integrated in lustre-master » x86_64,server,el6,inkernel #101 LU-104 Properly address ownership of posix and flock locks Oleg Drokin : 3bb8d1b9656994b0313cdba6ad8eeb7b84f5ee9f Files : lustre/utils/wiretest.c lustre/tests/flocks_test.c lustre/ldlm/ldlm_plain.c lustre/ldlm/ldlm_request.c lustre/ldlm/ldlm_inodebits.c lustre/include/lustre/lustre_idl.h lustre/utils/wirecheck.c lustre/tests/flock_test.c lustre/ldlm/ldlm_flock.c lustre/ldlm/ldlm_lock.c lustre/ldlm/ldlm_extent.c lustre/tests/sanity.sh lustre/ldlm/ldlm_internal.h lustre/tests/Makefile.am lustre/ptlrpc/pack_generic.c lustre/ldlm/ldlm_lockd.c lustre/ptlrpc/wiretest.c lustre/include/lustre_dlm.h lustre/llite/file.c

          Integrated in lustre-master » x86_64,client,el5,inkernel #101
          LU-104 Properly address ownership of posix and flock locks

          Oleg Drokin : 3bb8d1b9656994b0313cdba6ad8eeb7b84f5ee9f
          Files :

          • lustre/utils/wirecheck.c
          • lustre/tests/sanity.sh
          • lustre/ldlm/ldlm_lockd.c
          • lustre/include/lustre/lustre_idl.h
          • lustre/ldlm/ldlm_lock.c
          • lustre/utils/wiretest.c
          • lustre/ldlm/ldlm_extent.c
          • lustre/ldlm/ldlm_inodebits.c
          • lustre/tests/Makefile.am
          • lustre/ldlm/ldlm_request.c
          • lustre/ptlrpc/pack_generic.c
          • lustre/ldlm/ldlm_internal.h
          • lustre/ldlm/ldlm_plain.c
          • lustre/llite/file.c
          • lustre/ldlm/ldlm_flock.c
          • lustre/tests/flock_test.c
          • lustre/ptlrpc/wiretest.c
          • lustre/tests/flocks_test.c
          • lustre/include/lustre_dlm.h
          hudson Build Master (Inactive) added a comment - Integrated in lustre-master » x86_64,client,el5,inkernel #101 LU-104 Properly address ownership of posix and flock locks Oleg Drokin : 3bb8d1b9656994b0313cdba6ad8eeb7b84f5ee9f Files : lustre/utils/wirecheck.c lustre/tests/sanity.sh lustre/ldlm/ldlm_lockd.c lustre/include/lustre/lustre_idl.h lustre/ldlm/ldlm_lock.c lustre/utils/wiretest.c lustre/ldlm/ldlm_extent.c lustre/ldlm/ldlm_inodebits.c lustre/tests/Makefile.am lustre/ldlm/ldlm_request.c lustre/ptlrpc/pack_generic.c lustre/ldlm/ldlm_internal.h lustre/ldlm/ldlm_plain.c lustre/llite/file.c lustre/ldlm/ldlm_flock.c lustre/tests/flock_test.c lustre/ptlrpc/wiretest.c lustre/tests/flocks_test.c lustre/include/lustre_dlm.h

          Integrated in lustre-master » x86_64,server,el5,ofa #101
          LU-104 Properly address ownership of posix and flock locks

          Oleg Drokin : 3bb8d1b9656994b0313cdba6ad8eeb7b84f5ee9f
          Files :

          • lustre/ldlm/ldlm_lock.c
          • lustre/llite/file.c
          • lustre/tests/flocks_test.c
          • lustre/tests/flock_test.c
          • lustre/utils/wirecheck.c
          • lustre/include/lustre/lustre_idl.h
          • lustre/include/lustre_dlm.h
          • lustre/utils/wiretest.c
          • lustre/ldlm/ldlm_request.c
          • lustre/ldlm/ldlm_inodebits.c
          • lustre/ldlm/ldlm_plain.c
          • lustre/ldlm/ldlm_lockd.c
          • lustre/ptlrpc/pack_generic.c
          • lustre/ptlrpc/wiretest.c
          • lustre/ldlm/ldlm_extent.c
          • lustre/ldlm/ldlm_flock.c
          • lustre/tests/sanity.sh
          • lustre/ldlm/ldlm_internal.h
          • lustre/tests/Makefile.am
          hudson Build Master (Inactive) added a comment - Integrated in lustre-master » x86_64,server,el5,ofa #101 LU-104 Properly address ownership of posix and flock locks Oleg Drokin : 3bb8d1b9656994b0313cdba6ad8eeb7b84f5ee9f Files : lustre/ldlm/ldlm_lock.c lustre/llite/file.c lustre/tests/flocks_test.c lustre/tests/flock_test.c lustre/utils/wirecheck.c lustre/include/lustre/lustre_idl.h lustre/include/lustre_dlm.h lustre/utils/wiretest.c lustre/ldlm/ldlm_request.c lustre/ldlm/ldlm_inodebits.c lustre/ldlm/ldlm_plain.c lustre/ldlm/ldlm_lockd.c lustre/ptlrpc/pack_generic.c lustre/ptlrpc/wiretest.c lustre/ldlm/ldlm_extent.c lustre/ldlm/ldlm_flock.c lustre/tests/sanity.sh lustre/ldlm/ldlm_internal.h lustre/tests/Makefile.am

          Integrated in lustre-master » i686,client,el5,inkernel #101
          LU-104 Properly address ownership of posix and flock locks

          Oleg Drokin : 3bb8d1b9656994b0313cdba6ad8eeb7b84f5ee9f
          Files :

          • lustre/ldlm/ldlm_flock.c
          • lustre/tests/flocks_test.c
          • lustre/utils/wirecheck.c
          • lustre/include/lustre_dlm.h
          • lustre/ldlm/ldlm_extent.c
          • lustre/tests/sanity.sh
          • lustre/ldlm/ldlm_lockd.c
          • lustre/tests/Makefile.am
          • lustre/include/lustre/lustre_idl.h
          • lustre/ldlm/ldlm_internal.h
          • lustre/ldlm/ldlm_lock.c
          • lustre/ldlm/ldlm_plain.c
          • lustre/utils/wiretest.c
          • lustre/ldlm/ldlm_request.c
          • lustre/tests/flock_test.c
          • lustre/llite/file.c
          • lustre/ptlrpc/wiretest.c
          • lustre/ldlm/ldlm_inodebits.c
          • lustre/ptlrpc/pack_generic.c
          hudson Build Master (Inactive) added a comment - Integrated in lustre-master » i686,client,el5,inkernel #101 LU-104 Properly address ownership of posix and flock locks Oleg Drokin : 3bb8d1b9656994b0313cdba6ad8eeb7b84f5ee9f Files : lustre/ldlm/ldlm_flock.c lustre/tests/flocks_test.c lustre/utils/wirecheck.c lustre/include/lustre_dlm.h lustre/ldlm/ldlm_extent.c lustre/tests/sanity.sh lustre/ldlm/ldlm_lockd.c lustre/tests/Makefile.am lustre/include/lustre/lustre_idl.h lustre/ldlm/ldlm_internal.h lustre/ldlm/ldlm_lock.c lustre/ldlm/ldlm_plain.c lustre/utils/wiretest.c lustre/ldlm/ldlm_request.c lustre/tests/flock_test.c lustre/llite/file.c lustre/ptlrpc/wiretest.c lustre/ldlm/ldlm_inodebits.c lustre/ptlrpc/pack_generic.c
          pjones Peter Jones added a comment -

          Landed for 2.1. Please reopen if any further instances of this issue seen

          pjones Peter Jones added a comment - Landed for 2.1. Please reopen if any further instances of this issue seen
          pjones Peter Jones added a comment -

          LLNL confirmed on the weekly 2.1 call that the patch attached to 22040 fixes this issue in their tests

          pjones Peter Jones added a comment - LLNL confirmed on the weekly 2.1 call that the patch attached to 22040 fixes this issue in their tests

          Ah, I see. Well, flocks_test.c already does one flock() test (in t1), so it isn't so obvious that it shouldn't have more. Additionally, flocks_test.c has a crude framework for adding multiple tests while flock_test.c does not. Perhaps flock_test.c should just be folded into flocks_test.c and removed.

          Or we should clean them up and give them sane names...it would probably be best of all if we had a good way in test suite to easily compile and run individual C regression tests (sort of like autoconf does), so we don't need to piggy-back multiple tests into one C file.

          In any event, I'd like our test to appear somewhere that actually gets run.

          morrone Christopher Morrone (Inactive) added a comment - - edited Ah, I see. Well, flocks_test.c already does one flock() test (in t1), so it isn't so obvious that it shouldn't have more. Additionally, flocks_test.c has a crude framework for adding multiple tests while flock_test.c does not. Perhaps flock_test.c should just be folded into flocks_test.c and removed. Or we should clean them up and give them sane names...it would probably be best of all if we had a good way in test suite to easily compile and run individual C regression tests (sort of like autoconf does), so we don't need to piggy-back multiple tests into one C file. In any event, I'd like our test to appear somewhere that actually gets run.

          People

            green Oleg Drokin
            morrone Christopher Morrone (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: