[LU-104] Lustre grants flock exclusive locks on two file descriptors for the same file Created: 28/Feb/11  Updated: 28/Jun/11  Resolved: 03/May/11

Status: Resolved
Project: Lustre
Component/s: None
Affects Version/s: Lustre 2.1.0
Fix Version/s: Lustre 2.1.0

Type: Bug Priority: Blocker
Reporter: Christopher Morrone Assignee: Oleg Drokin
Resolution: Fixed Votes: 0
Labels: None

Severity: 3
Bugzilla ID: 22,660
Rank (Obsolete): 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.



 Comments   
Comment by Christopher Morrone [ 28/Feb/11 ]

Patch for head pushed to gerrit:

http://review.whamcloud.com/279

Comment by Oleg Drokin [ 28/Feb/11 ]

the flock (not posix locks you get with fcntl) in lustre is totally broken.
The proper fix for tihs problem that actually addresses the problem at the lustre level + fixes nfs4 locking is located in bug 22040.

Comment by Peter Jones [ 01/Mar/11 ]

Oleg

So, is the patch from bz 22040 something that we could include in Lustre 2.1?

Peter

Comment by Oleg Drokin [ 01/Mar/11 ]

Yes. I think we need in in 2.1. I am still debating with myself if I need to include it verbatim or if I should add compat flag + its check for extra safety.

Comment by Peter Jones [ 01/Mar/11 ]

ok, I have marked it as a blocker and assigned it to you while you ponder. We can reassign to another engineer once you have decided the approach if you prefer

Comment by Christopher Morrone [ 01/Mar/11 ]

I could not really understand what was being said on the phone, so I'll start the conversation here again.

Regardless of how the bug is fixed, I think the test from our patch should be added (or something equivalent). There was no existing test that did what our test added as far as I can see.

Comment by Oleg Drokin [ 01/Mar/11 ]

Ok.
What I was trying to convey was that your test went into flocks_test.c and that one deal with posix locks.
There is also flock_test.c that deals with bsd locks and your test belongs there.
Of course the problem is flock_test.c is never run because bsd locks just don't work correctly in Lustre anyway.

Comment by Christopher Morrone [ 01/Mar/11 ]

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.

Comment by Peter Jones [ 15/Mar/11 ]

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

Comment by Peter Jones [ 03/May/11 ]

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

Comment by Build Master (Inactive) [ 03/May/11 ]

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
Comment by Build Master (Inactive) [ 03/May/11 ]

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
Comment by Build Master (Inactive) [ 03/May/11 ]

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
Comment by Build Master (Inactive) [ 03/May/11 ]

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
Comment by Build Master (Inactive) [ 03/May/11 ]

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
Comment by Build Master (Inactive) [ 03/May/11 ]

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
Comment by Build Master (Inactive) [ 03/May/11 ]

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
Comment by Build Master (Inactive) [ 03/May/11 ]

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
Comment by Build Master (Inactive) [ 03/May/11 ]

Integrated in lustre-master » i686,server,el5,ofa #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/utils/wiretest.c
  • lustre/ldlm/ldlm_internal.h
  • lustre/ldlm/ldlm_lockd.c
  • lustre/ptlrpc/pack_generic.c
  • lustre/ldlm/ldlm_lock.c
  • lustre/include/lustre/lustre_idl.h
  • lustre/tests/sanity.sh
  • lustre/ldlm/ldlm_request.c
  • lustre/ldlm/ldlm_inodebits.c
  • lustre/ldlm/ldlm_extent.c
  • lustre/utils/wirecheck.c
  • lustre/ldlm/ldlm_plain.c
  • lustre/tests/flock_test.c
  • lustre/include/lustre_dlm.h
  • lustre/ldlm/ldlm_flock.c
  • lustre/llite/file.c
  • lustre/ptlrpc/wiretest.c
Comment by Build Master (Inactive) [ 03/May/11 ]

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

Oleg Drokin : 3bb8d1b9656994b0313cdba6ad8eeb7b84f5ee9f
Files :

  • lustre/tests/flock_test.c
  • lustre/llite/file.c
  • lustre/ptlrpc/pack_generic.c
  • lustre/ldlm/ldlm_plain.c
  • lustre/ptlrpc/wiretest.c
  • lustre/ldlm/ldlm_lock.c
  • lustre/ldlm/ldlm_lockd.c
  • lustre/ldlm/ldlm_flock.c
  • lustre/ldlm/ldlm_internal.h
  • lustre/tests/sanity.sh
  • lustre/tests/flocks_test.c
  • lustre/utils/wiretest.c
  • lustre/include/lustre_dlm.h
  • lustre/utils/wirecheck.c
  • lustre/ldlm/ldlm_request.c
  • lustre/tests/Makefile.am
  • lustre/ldlm/ldlm_inodebits.c
  • lustre/ldlm/ldlm_extent.c
  • lustre/include/lustre/lustre_idl.h
Comment by Build Master (Inactive) [ 03/May/11 ]

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

Oleg Drokin : 3bb8d1b9656994b0313cdba6ad8eeb7b84f5ee9f
Files :

  • lustre/include/lustre/lustre_idl.h
  • lustre/ldlm/ldlm_flock.c
  • lustre/ldlm/ldlm_lockd.c
  • lustre/tests/Makefile.am
  • lustre/llite/file.c
  • lustre/utils/wiretest.c
  • lustre/ldlm/ldlm_extent.c
  • lustre/ptlrpc/pack_generic.c
  • lustre/tests/sanity.sh
  • lustre/ldlm/ldlm_internal.h
  • lustre/tests/flocks_test.c
  • lustre/tests/flock_test.c
  • lustre/include/lustre_dlm.h
  • lustre/ldlm/ldlm_plain.c
  • lustre/ptlrpc/wiretest.c
  • lustre/ldlm/ldlm_inodebits.c
  • lustre/ldlm/ldlm_request.c
  • lustre/ldlm/ldlm_lock.c
  • lustre/utils/wirecheck.c
Comment by Build Master (Inactive) [ 03/May/11 ]

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

Oleg Drokin : 3bb8d1b9656994b0313cdba6ad8eeb7b84f5ee9f
Files :

  • lustre/ldlm/ldlm_lock.c
  • lustre/include/lustre/lustre_idl.h
  • lustre/ldlm/ldlm_flock.c
  • lustre/tests/flock_test.c
  • lustre/ldlm/ldlm_inodebits.c
  • lustre/ldlm/ldlm_internal.h
  • lustre/ldlm/ldlm_lockd.c
  • lustre/ldlm/ldlm_request.c
  • lustre/include/lustre_dlm.h
  • lustre/ldlm/ldlm_plain.c
  • lustre/tests/flocks_test.c
  • lustre/tests/sanity.sh
  • lustre/ldlm/ldlm_extent.c
  • lustre/utils/wirecheck.c
  • lustre/tests/Makefile.am
  • lustre/ptlrpc/pack_generic.c
  • lustre/llite/file.c
  • lustre/ptlrpc/wiretest.c
  • lustre/utils/wiretest.c
Comment by Build Master (Inactive) [ 03/May/11 ]

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

Oleg Drokin : 3bb8d1b9656994b0313cdba6ad8eeb7b84f5ee9f
Files :

  • lustre/utils/wiretest.c
  • lustre/llite/file.c
  • lustre/ldlm/ldlm_flock.c
  • lustre/ldlm/ldlm_inodebits.c
  • lustre/ptlrpc/pack_generic.c
  • lustre/ldlm/ldlm_plain.c
  • lustre/tests/sanity.sh
  • lustre/ldlm/ldlm_lockd.c
  • lustre/tests/flock_test.c
  • lustre/ldlm/ldlm_internal.h
  • lustre/ldlm/ldlm_extent.c
  • lustre/tests/flocks_test.c
  • lustre/tests/Makefile.am
  • lustre/include/lustre_dlm.h
  • lustre/include/lustre/lustre_idl.h
  • lustre/ldlm/ldlm_request.c
  • lustre/ptlrpc/wiretest.c
  • lustre/utils/wirecheck.c
  • lustre/ldlm/ldlm_lock.c
Comment by Build Master (Inactive) [ 03/May/11 ]

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

Oleg Drokin : 3bb8d1b9656994b0313cdba6ad8eeb7b84f5ee9f
Files :

  • lustre/ldlm/ldlm_extent.c
  • lustre/llite/file.c
  • lustre/ldlm/ldlm_internal.h
  • lustre/tests/flocks_test.c
  • lustre/ptlrpc/wiretest.c
  • lustre/ldlm/ldlm_plain.c
  • lustre/utils/wirecheck.c
  • lustre/ldlm/ldlm_lockd.c
  • lustre/tests/sanity.sh
  • lustre/ldlm/ldlm_inodebits.c
  • lustre/tests/flock_test.c
  • lustre/ptlrpc/pack_generic.c
  • lustre/ldlm/ldlm_lock.c
  • lustre/ldlm/ldlm_request.c
  • lustre/include/lustre/lustre_idl.h
  • lustre/ldlm/ldlm_flock.c
  • lustre/utils/wiretest.c
  • lustre/include/lustre_dlm.h
  • lustre/tests/Makefile.am
Comment by Build Master (Inactive) [ 28/Jun/11 ]

Integrated in hydra-server » x86_64,el5 #12
Initial 'events' interface (LU-104, LU-122)

john :
Files :

  • monitor/lib/lustre_audit.py
  • monitor/static/images/dialog-error.png
  • settings.py
  • monitor/urls.py
  • monitor/views.py
  • monitor/static/css/base.css
  • monitor/templates/events.html
  • monitor/models.py
  • monitor/bin/hydra-debug.py
  • monitor/static/images/dialog-warning.png
  • monitor/templates/base.html
  • monitor/static/images/dialog-information.png
Generated at Sat Feb 10 01:03:47 UTC 2024 using Jira 9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c.