J. Bruce Fields
9d9b87c121
lockd: fix regression in lockd's handling of blocked locks
...
If a client requests a blocking lock, is denied, then requests it again,
then here in nlmsvc_lock() we will call vfs_lock_file() without FL_SLEEP
set, because we've already queued a block and don't need the locks code
to do it again.
But that means vfs_lock_file() will return -EAGAIN instead of
FILE_LOCK_DENIED. So we still need to translate that -EAGAIN return
into a nlm_lck_blocked error in this case, and put ourselves back on
lockd's block list.
The bug was introduced by bde74e4bc6 "locks: add special return
value for asynchronous locks".
Thanks to Frank van Maarseveen for the report; his original test
case was essentially
for i in `seq 30`; do flock /nfsmount/foo sleep 10 & done
Tested-by: Frank van Maarseveen <frankvm@frankvm.com >
Reported-by: Frank van Maarseveen <frankvm@frankvm.com >
Cc: Miklos Szeredi <mszeredi@suse.cz >
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu >
2009-02-09 13:19:46 -05:00
..
2009-01-22 13:16:01 +03:00
2009-01-22 13:15:56 +03:00
2009-01-22 13:15:56 +03:00
2009-01-22 13:16:01 +03:00
2009-01-22 13:15:54 +03:00
2009-01-22 13:15:54 +03:00
2009-01-22 13:15:57 +03:00
2009-01-22 13:15:57 +03:00
2009-01-22 13:15:54 +03:00
2009-01-29 03:32:13 +00:00
2009-01-22 13:16:01 +03:00
2009-02-02 14:20:18 -08:00
2009-01-22 13:15:58 +03:00
2009-01-07 10:00:16 -08:00
2009-01-05 11:54:28 -05:00
2009-01-21 15:28:45 -06:00
2009-01-22 13:15:56 +03:00
2009-01-22 13:15:57 +03:00
2008-12-25 11:40:09 +11:00
2009-01-15 16:39:42 -08:00
2009-01-16 11:13:47 -05:00
2009-01-30 00:00:24 -05:00
2009-01-22 13:15:55 +03:00
2009-01-22 13:15:58 +03:00
2009-01-26 10:08:50 -08:00
2009-01-09 16:54:42 -08:00
2009-01-22 13:15:57 +03:00
2009-01-22 13:15:57 +03:00
2009-01-04 13:33:20 -08:00
2009-01-22 13:15:59 +03:00
2009-01-06 15:59:08 -08:00
2009-01-22 13:15:55 +03:00
2009-01-08 08:31:01 -08:00
2009-01-11 22:34:01 -05:00
2009-01-09 21:05:21 +00:00
2009-01-22 13:15:54 +03:00
2009-02-09 13:19:46 -05:00
2009-01-22 13:15:58 +03:00
2009-01-22 13:16:01 +03:00
2009-01-22 13:16:00 +03:00
2008-12-23 15:21:32 -05:00
2009-01-27 17:26:59 -05:00
2009-01-26 10:08:05 -08:00
2009-01-22 13:15:55 +03:00
2009-02-02 14:20:20 -08:00
2009-01-22 13:15:58 +03:00
2009-01-05 11:54:28 -05:00
2009-01-09 21:46:13 +01:00
2009-01-09 14:00:58 -08:00
2009-01-22 13:15:59 +03:00
2009-01-08 12:04:46 +00:00
2009-01-22 13:15:53 +03:00
2009-01-22 13:15:59 +03:00
2009-01-22 13:16:01 +03:00
2009-01-22 13:15:58 +03:00
2009-01-26 10:40:28 -08:00
2009-01-22 13:15:59 +03:00
2009-01-29 16:34:30 +02:00
2009-01-22 13:15:55 +03:00
2009-01-22 13:16:00 +03:00
2009-02-03 11:04:54 -06:00
2009-01-14 14:15:25 +01:00
2008-12-31 16:55:44 +02:00
2008-12-31 18:07:43 -05:00
2009-01-03 11:45:54 -08:00
2009-01-08 12:04:47 +00:00
2009-01-08 08:31:12 -08:00
2009-01-08 12:04:47 +00:00
2009-01-06 15:59:19 -08:00
2009-01-30 12:34:36 +01:00
2009-01-02 11:10:35 -06:00
2009-01-09 16:54:42 -08:00
2009-01-14 14:15:22 +01:00
2009-01-06 15:59:13 -08:00
2009-01-29 16:53:35 -08:00
2009-01-14 14:15:16 +01:00
2009-01-14 14:15:26 +01:00
2009-01-14 14:15:18 +01:00
2009-01-06 15:59:06 -08:00
2009-01-16 18:02:10 +01:00
2009-01-14 14:15:31 +01:00
2009-01-29 18:04:45 -08:00
2009-01-14 14:15:29 +01:00
2009-01-14 14:15:24 +01:00
2008-12-31 18:07:42 -05:00
2009-01-14 14:15:29 +01:00
2009-01-06 15:59:09 -08:00
2009-01-09 13:15:49 -08:00
2009-01-14 14:15:24 +01:00
2009-01-14 14:15:30 +01:00
2009-01-22 13:16:01 +03:00
2009-01-09 16:54:41 -08:00
2009-01-05 18:32:06 -08:00
2009-01-14 14:15:25 +01:00
2009-01-09 15:18:49 -08:00
2009-01-06 15:59:01 -08:00
2009-01-14 14:15:30 +01:00
2009-01-14 14:15:24 +01:00
2009-01-14 14:15:29 +01:00
2009-01-14 14:15:30 +01:00
2009-01-14 14:15:32 +01:00
2009-01-05 08:40:21 -08:00
2009-01-05 08:40:21 -08:00
2009-01-05 08:36:58 -08:00
2009-01-05 08:40:21 -08:00
2009-01-14 14:15:26 +01:00
2009-01-05 08:36:58 -08:00
2009-01-05 08:40:21 -08:00
2009-01-14 14:15:26 +01:00
2009-01-14 14:15:31 +01:00
2009-01-14 14:15:31 +01:00
2009-01-03 12:04:39 -08:00
2009-01-14 14:15:31 +01:00
2009-01-14 14:15:31 +01:00
2009-01-14 14:15:30 +01:00
2009-01-14 14:15:23 +01:00
2009-01-14 14:15:21 +01:00
2009-01-14 14:15:31 +01:00
2009-01-14 14:15:30 +01:00
2009-01-14 14:15:23 +01:00