2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-08-15 02:02:26 +02:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-04-24 07:44:08 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-09-16 19:28:13 -07:00
|
|
|
|
2008-01-17 00:07:08 +00:00
|
|
|
|
2013-06-21 08:58:18 -04:00
|
|
|
|
2013-06-21 08:58:22 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-05-09 14:13:05 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-12-24 11:46:01 -08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-21 19:17:03 +01:00
|
|
|
|
2014-04-22 08:24:32 -04:00
|
|
|
|
fs/locks: Remove fl_nspid and use fs-specific l_pid for remote locks
Since commit c69899a17ca4 "NFSv4: Update of VFS byte range lock must be
atomic with the stateid update", NFSv4 has been inserting locks in rpciod
worker context. The result is that the file_lock's fl_nspid is the
kworker's pid instead of the original userspace pid.
The fl_nspid is only used to represent the namespaced virtual pid number
when displaying locks or returning from F_GETLK. There's no reason to set
it for every inserted lock, since we can usually just look it up from
fl_pid. So, instead of looking up and holding struct pid for every lock,
let's just look up the virtual pid number from fl_pid when it is needed.
That means we can remove fl_nspid entirely.
The translaton and presentation of fl_pid should handle the following four
cases:
1 - F_GETLK on a remote file with a remote lock:
In this case, the filesystem should determine the l_pid to return here.
Filesystems should indicate that the fl_pid represents a non-local pid
value that should not be translated by returning an fl_pid <= 0.
2 - F_GETLK on a local file with a remote lock:
This should be the l_pid of the lock manager process, and translated.
3 - F_GETLK on a remote file with a local lock, and
4 - F_GETLK on a local file with a local lock:
These should be the translated l_pid of the local locking process.
Fuse was already doing the correct thing by translating the pid into the
caller's namespace. With this change we must update fuse to translate
to init's pid namespace, so that the locks API can then translate from
init's pid namespace into the pid namespace of the caller.
With this change, the locks API will expect that if a filesystem returns
a remote pid as opposed to a local pid for F_GETLK, that remote pid will
be <= 0. This signifies that the pid is remote, and the locks API will
forego translating that pid into the pid namespace of the local calling
process.
Finally, we convert remote filesystems to present remote pids using
negative numbers. Have lustre, 9p, ceph, cifs, and dlm negate the remote
pid returned for F_GETLK lock requests.
Since local pids will never be larger than PID_MAX_LIMIT (which is
currently defined as <= 4 million), but pid_t is an unsigned int, we
should have plenty of room to represent remote pids with negative
numbers if we assume that remote pid numbers are similarly limited.
If this is not the case, then we run the risk of having a remote pid
returned for which there is also a corresponding local pid. This is a
problem we have now, but this patch should reduce the chances of that
occurring, while also returning those remote pid numbers, for whatever
that may be worth.
Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
Signed-off-by: Jeff Layton <jlayton@redhat.com>
2017-07-16 10:28:22 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2016-09-16 12:44:20 +02:00
|
|
|
|
|
|
|
|
|
2017-11-27 13:05:09 -08:00
|
|
|
|
2016-09-16 12:44:20 +02:00
|
|
|
|
|
|
|
|
|
2011-07-26 20:10:51 -04:00
|
|
|
|
|
|
|
|
|
2011-07-26 18:25:49 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-07-26 20:10:51 -04:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:15 -04:00
|
|
|
|
2013-06-21 08:58:22 -04:00
|
|
|
|
2015-06-22 14:16:34 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:15 -04:00
|
|
|
|
2015-06-22 14:16:34 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-06-22 14:16:33 +02:00
|
|
|
|
2013-06-21 08:58:14 -04:00
|
|
|
|
2013-06-21 08:58:15 -04:00
|
|
|
|
2013-06-21 08:58:18 -04:00
|
|
|
|
2013-06-21 08:58:20 -04:00
|
|
|
|
2013-06-21 08:58:18 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:15 -04:00
|
|
|
|
2013-06-21 08:58:18 -04:00
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:14 -04:00
|
|
|
|
2013-06-21 08:58:15 -04:00
|
|
|
|
2013-06-21 08:58:20 -04:00
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:15 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2013-06-21 08:58:15 -04:00
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2013-06-21 08:58:15 -04:00
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:15 -04:00
|
|
|
|
2013-06-21 08:58:20 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-01-16 15:05:54 -05:00
|
|
|
|
2006-12-06 20:33:20 -08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-01-16 15:05:54 -05:00
|
|
|
|
2015-04-03 09:04:03 -04:00
|
|
|
|
2015-01-16 15:05:54 -05:00
|
|
|
|
2015-09-21 09:43:06 +02:00
|
|
|
|
2015-01-16 15:05:54 -05:00
|
|
|
|
2015-09-21 09:43:06 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:54 -05:00
|
|
|
|
|
|
|
|
|
2015-09-21 09:43:06 +02:00
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:54 -05:00
|
|
|
|
|
|
|
|
|
2015-09-21 09:43:06 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:54 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-09-21 09:43:06 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:54 -05:00
|
|
|
|
2016-01-06 21:26:10 -05:00
|
|
|
|
2015-09-21 09:43:06 +02:00
|
|
|
|
2015-01-16 15:05:54 -05:00
|
|
|
|
|
|
|
|
|
2016-01-06 21:28:41 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-07-21 13:36:25 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:54 -05:00
|
|
|
|
2016-01-07 15:08:51 -05:00
|
|
|
|
2015-01-16 15:05:54 -05:00
|
|
|
|
2016-01-07 15:08:51 -05:00
|
|
|
|
|
|
|
|
|
2016-01-06 21:28:41 -05:00
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:54 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-07-07 13:06:09 +02:00
|
|
|
|
2011-07-06 12:33:55 +02:00
|
|
|
|
2013-06-21 08:58:17 -04:00
|
|
|
|
2015-01-16 15:05:54 -05:00
|
|
|
|
2011-07-07 13:06:09 +02:00
|
|
|
|
|
|
|
|
|
2011-07-06 12:33:55 +02:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2010-10-27 15:46:08 +02:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2011-07-07 13:06:09 +02:00
|
|
|
|
2011-07-06 12:33:55 +02:00
|
|
|
|
|
|
|
|
|
2011-07-07 13:06:09 +02:00
|
|
|
|
2011-07-06 12:33:55 +02:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2010-10-27 15:46:08 +02:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2009-03-31 15:12:56 -05:00
|
|
|
|
2006-03-20 13:44:05 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-22 10:18:43 -04:00
|
|
|
|
2015-04-03 09:04:04 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-22 10:18:43 -04:00
|
|
|
|
|
|
|
|
|
2006-03-20 13:44:05 -05:00
|
|
|
|
2009-03-31 15:12:56 -05:00
|
|
|
|
2006-03-20 13:44:05 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2010-10-30 17:31:15 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-03-31 02:30:29 -08:00
|
|
|
|
2015-01-16 15:05:54 -05:00
|
|
|
|
2006-03-31 02:30:29 -08:00
|
|
|
|
2013-06-21 08:58:17 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-03-20 13:44:05 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2010-10-30 17:31:15 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-08-11 14:20:31 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:54 -05:00
|
|
|
|
|
|
|
|
|
2014-08-11 14:20:31 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2011-07-07 13:06:09 +02:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-22 10:18:42 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-03-20 13:44:38 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-22 10:18:43 -04:00
|
|
|
|
2006-03-20 13:44:38 -05:00
|
|
|
|
2014-08-22 10:18:43 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-04-03 09:04:04 -04:00
|
|
|
|
2014-08-22 10:18:43 -04:00
|
|
|
|
2006-03-20 13:44:38 -05:00
|
|
|
|
2014-08-22 10:18:42 -04:00
|
|
|
|
2006-03-20 13:44:38 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-11 14:09:35 -04:00
|
|
|
|
|
|
|
|
|
2006-03-20 13:44:38 -05:00
|
|
|
|
2014-08-22 10:18:42 -04:00
|
|
|
|
2014-08-22 10:18:43 -04:00
|
|
|
|
2006-03-20 13:44:38 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-03-20 13:44:05 -05:00
|
|
|
|
2014-08-22 10:18:43 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-09-04 10:25:06 -04:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-09-04 10:25:06 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-09-04 10:25:06 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-09-04 10:25:06 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2014-07-13 17:00:38 +02:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-09-04 10:25:06 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2012-07-23 15:17:17 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-02-03 12:13:08 -05:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2006-09-30 23:27:35 -07:00
|
|
|
|
2014-02-03 12:13:08 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-09-30 23:27:35 -07:00
|
|
|
|
2014-02-03 12:13:08 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-09-30 23:27:35 -07:00
|
|
|
|
2014-02-03 12:13:08 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-02-03 12:13:08 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-10-18 14:20:21 -07:00
|
|
|
|
2014-02-03 12:13:08 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-10-18 14:20:21 -07:00
|
|
|
|
2014-02-03 12:13:08 -05:00
|
|
|
|
2005-10-18 14:20:21 -07:00
|
|
|
|
2014-02-03 12:13:08 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-02-03 12:13:08 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-02-03 12:13:08 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-09-01 15:06:54 -04:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2014-09-01 15:06:54 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2014-08-22 10:55:47 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-09-21 17:01:12 -07:00
|
|
|
|
2011-07-20 20:21:59 -04:00
|
|
|
|
|
|
|
|
|
2014-08-22 10:55:47 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-07-23 15:17:17 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-05-07 23:02:42 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-09-01 19:04:48 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-07-23 15:17:17 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2006-05-07 23:02:42 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2007-03-01 14:34:35 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2006-05-07 23:02:42 -04:00
|
|
|
|
|
|
|
|
|
2007-03-01 14:34:35 -05:00
|
|
|
|
2006-05-07 23:02:42 -04:00
|
|
|
|
2007-03-01 14:34:35 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-01-08 01:05:22 -08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2011-07-20 20:21:59 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2011-07-20 20:21:59 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2014-02-03 12:13:07 -05:00
|
|
|
|
2013-06-21 08:58:14 -04:00
|
|
|
|
2015-06-22 14:16:34 +02:00
|
|
|
|
|
|
|
|
|
2015-06-22 14:16:33 +02:00
|
|
|
|
|
|
|
|
|
2015-06-22 14:16:34 +02:00
|
|
|
|
2013-06-21 08:58:22 -04:00
|
|
|
|
2015-06-22 14:16:34 +02:00
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:14 -04:00
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2014-02-03 12:13:07 -05:00
|
|
|
|
2013-06-21 08:58:14 -04:00
|
|
|
|
2015-06-22 14:16:34 +02:00
|
|
|
|
|
|
|
|
|
2015-06-22 14:16:33 +02:00
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:22 -04:00
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2013-06-21 08:58:22 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-06-22 14:16:34 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:17 -04:00
|
|
|
|
2015-06-22 14:16:34 +02:00
|
|
|
|
2013-06-21 08:58:14 -04:00
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:19 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-02-03 12:13:07 -05:00
|
|
|
|
2013-06-21 08:58:14 -04:00
|
|
|
|
2015-04-03 09:04:03 -04:00
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:19 -04:00
|
|
|
|
2013-06-21 08:58:14 -04:00
|
|
|
|
|
|
|
|
|
2014-02-03 12:13:07 -05:00
|
|
|
|
2013-06-21 08:58:14 -04:00
|
|
|
|
2015-04-03 09:04:03 -04:00
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:18 -04:00
|
|
|
|
2013-06-21 08:58:14 -04:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:15 -04:00
|
|
|
|
2013-06-21 08:58:20 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-01-08 01:05:22 -08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2013-06-21 08:58:14 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:10 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2013-06-21 08:58:20 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2013-06-21 08:58:20 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:15 -04:00
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2013-06-21 08:58:15 -04:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-03-26 01:37:24 -08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2013-06-21 08:58:14 -04:00
|
|
|
|
2014-04-22 08:24:32 -04:00
|
|
|
|
2013-06-21 08:58:15 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2013-06-21 08:58:15 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:20 -04:00
|
|
|
|
2013-06-21 08:58:15 -04:00
|
|
|
|
2013-06-21 08:58:20 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:12 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:16 -04:00
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:20 -04:00
|
|
|
|
2013-06-21 08:58:16 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:20 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-09-19 16:44:07 +04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2011-07-20 20:21:59 -04:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:20 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2015-02-16 14:32:03 -05:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2015-02-16 14:32:03 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2013-06-21 08:58:14 -04:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-02-03 12:13:06 -05:00
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2015-02-16 14:32:03 -05:00
|
|
|
|
2014-02-03 12:13:06 -05:00
|
|
|
|
2015-02-16 14:32:03 -05:00
|
|
|
|
2014-08-11 14:20:31 -04:00
|
|
|
|
2015-01-16 15:05:54 -05:00
|
|
|
|
2014-08-11 14:20:31 -04:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-04-03 09:04:02 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-04-03 09:04:02 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-05-11 16:09:32 -04:00
|
|
|
|
2007-02-21 00:55:18 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2016-09-16 12:44:20 +02:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-09-21 09:43:06 +02:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2007-05-11 16:09:32 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-10-26 18:05:40 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-10-26 18:05:40 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-10-26 18:05:40 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-10-30 11:20:02 -04:00
|
|
|
|
2007-10-26 18:05:40 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-02-03 12:13:09 -05:00
|
|
|
|
2014-04-22 08:24:32 -04:00
|
|
|
|
2014-02-03 12:13:09 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-04-22 08:24:32 -04:00
|
|
|
|
2014-02-03 12:13:09 -05:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-10-30 11:20:02 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-10-26 18:05:40 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:19 -04:00
|
|
|
|
2007-10-26 18:05:40 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:20 -04:00
|
|
|
|
2006-06-23 02:05:13 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2007-10-30 11:20:02 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-04-03 09:04:03 -04:00
|
|
|
|
|
|
|
|
|
2014-02-03 12:13:09 -05:00
|
|
|
|
|
|
|
|
|
2014-04-22 08:24:32 -04:00
|
|
|
|
2014-02-03 12:13:09 -05:00
|
|
|
|
2014-04-22 08:24:32 -04:00
|
|
|
|
2014-02-03 12:13:09 -05:00
|
|
|
|
|
|
|
|
|
2007-10-26 18:05:40 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-09-12 15:45:07 -04:00
|
|
|
|
2006-06-29 16:38:32 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-07-11 06:43:02 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-03-31 02:30:55 -08:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2014-08-11 14:20:31 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-04-03 09:04:03 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2010-09-18 15:09:31 +02:00
|
|
|
|
2007-09-11 16:38:13 +04:00
|
|
|
|
2010-09-18 15:09:31 +02:00
|
|
|
|
|
|
|
|
|
2007-09-11 16:38:13 +04:00
|
|
|
|
|
|
|
|
|
2016-05-30 16:48:35 +02:00
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2010-09-18 15:09:31 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2015-07-11 06:43:02 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-03-31 02:30:55 -08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2015-02-16 14:32:03 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-06-29 16:38:32 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-03-31 02:30:55 -08:00
|
|
|
|
2006-06-29 16:38:32 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-06-29 16:38:37 -04:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2006-03-31 02:30:55 -08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2008-07-25 01:48:57 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2006-06-29 16:38:37 -04:00
|
|
|
|
|
|
|
|
|
2006-03-31 02:30:55 -08:00
|
|
|
|
2015-02-16 14:32:03 -05:00
|
|
|
|
2006-03-31 02:30:55 -08:00
|
|
|
|
2006-06-14 17:59:35 +04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2016-05-30 16:48:35 +02:00
|
|
|
|
2006-03-31 02:30:55 -08:00
|
|
|
|
|
|
|
|
|
2014-08-11 14:20:31 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-01-07 18:27:42 -05:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2006-06-23 02:05:10 -07:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2013-06-21 08:58:13 -04:00
|
|
|
|
|
|
|
|
|
2014-08-11 14:20:31 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-04-03 09:04:03 -04:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2015-04-03 09:04:03 -04:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-06-23 02:05:10 -07:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-06-23 02:05:10 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2016-05-30 16:48:35 +02:00
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2013-06-21 08:58:12 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:18 -04:00
|
|
|
|
2013-06-21 08:58:12 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2006-03-26 01:37:26 -08:00
|
|
|
|
2014-08-22 10:18:42 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:15 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2013-06-21 08:58:20 -04:00
|
|
|
|
2013-06-21 08:58:15 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:20 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:12 -04:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2005-08-25 16:25:35 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-08-25 16:25:35 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-16 14:32:03 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:13 -04:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:13 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-16 14:32:03 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2014-08-12 08:03:49 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-08-12 08:03:49 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-16 14:32:03 -05:00
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:13 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-06-23 02:05:09 -07:00
|
|
|
|
2013-06-21 08:58:12 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-06-23 02:05:09 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2006-06-29 16:38:32 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-06-29 16:38:32 -04:00
|
|
|
|
2006-06-23 02:05:09 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-02-16 14:32:03 -05:00
|
|
|
|
2015-02-17 17:08:23 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-16 14:32:03 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2016-05-30 16:48:35 +02:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-11 14:20:31 -04:00
|
|
|
|
2016-01-06 21:26:10 -05:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-01-18 16:15:35 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-06-29 16:38:32 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-01-18 16:15:35 -05:00
|
|
|
|
2006-03-26 01:37:26 -08:00
|
|
|
|
|
|
|
|
|
2016-09-16 12:44:20 +02:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-01-18 16:15:35 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2015-07-11 06:43:02 -04:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2015-10-22 13:38:15 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-10-22 13:38:15 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-01-07 18:27:42 -05:00
|
|
|
|
2008-07-25 01:48:57 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-07-11 06:43:02 -04:00
|
|
|
|
2015-11-16 09:49:34 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2014-03-10 09:54:15 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-03-10 09:54:15 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2016-09-16 12:44:20 +02:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2015-09-21 09:43:06 +02:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
|
|
|
|
|
2014-07-13 17:00:38 +02:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-03 12:59:49 +01:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-12-03 12:59:49 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-03 12:59:49 +01:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-03-10 09:54:19 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-03-10 09:54:19 -04:00
|
|
|
|
2015-12-03 12:59:49 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2014-03-10 09:54:19 -04:00
|
|
|
|
2014-07-13 17:00:38 +02:00
|
|
|
|
2014-03-10 09:54:19 -04:00
|
|
|
|
2016-01-07 18:27:42 -05:00
|
|
|
|
2014-03-10 09:54:19 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-01-07 18:27:42 -05:00
|
|
|
|
2008-07-25 01:48:57 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-10-01 14:41:11 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-11-16 09:49:34 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2011-07-26 18:25:49 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-07-26 18:25:49 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2012-07-27 00:42:52 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-07-27 16:18:00 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-16 14:32:03 -05:00
|
|
|
|
2012-07-27 00:42:52 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-07-26 18:25:49 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-09-01 07:12:07 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2014-08-22 18:50:48 -04:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2014-05-09 14:13:05 -04:00
|
|
|
|
2011-07-26 18:25:49 -04:00
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2011-07-26 18:25:49 -04:00
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-03-05 13:18:59 -05:00
|
|
|
|
|
|
|
|
|
2015-01-21 19:17:03 +01:00
|
|
|
|
|
|
|
|
|
2012-03-05 13:18:59 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-09-01 14:53:41 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2014-09-01 14:53:41 -04:00
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2014-09-01 14:53:41 -04:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2014-09-01 14:53:41 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-03-05 13:18:59 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-05-09 16:10:27 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2012-03-05 13:18:59 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2011-07-26 18:25:49 -04:00
|
|
|
|
2015-09-21 09:43:06 +02:00
|
|
|
|
2015-03-27 10:34:20 +08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2009-12-24 06:47:55 -05:00
|
|
|
|
2014-09-01 07:12:07 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2009-12-24 06:47:55 -05:00
|
|
|
|
2011-12-26 10:25:26 -08:00
|
|
|
|
|
|
|
|
|
2012-03-05 13:18:59 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2015-09-21 09:43:06 +02:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-05-30 16:48:35 +02:00
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-09-01 07:12:07 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-09-01 14:53:41 -04:00
|
|
|
|
2011-07-26 18:25:49 -04:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-03-27 10:34:20 +08:00
|
|
|
|
2012-03-05 13:18:59 -05:00
|
|
|
|
|
|
|
|
|
2011-07-26 18:25:49 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2011-07-26 18:25:49 -04:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2011-07-26 18:25:49 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-09-01 15:06:54 -04:00
|
|
|
|
2015-02-16 14:32:03 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2014-09-01 15:06:54 -04:00
|
|
|
|
|
|
|
|
|
2014-09-01 14:27:43 -04:00
|
|
|
|
2014-05-09 14:13:05 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
|
|
|
|
|
2014-04-15 06:17:49 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-04-15 06:17:49 -04:00
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2014-05-09 14:13:05 -04:00
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2016-05-30 16:48:35 +02:00
|
|
|
|
2015-06-22 14:16:33 +02:00
|
|
|
|
2014-09-01 07:12:07 -04:00
|
|
|
|
2008-01-14 21:28:30 -07:00
|
|
|
|
|
|
|
|
|
2015-06-22 14:16:33 +02:00
|
|
|
|
2016-05-30 16:48:35 +02:00
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2014-05-09 14:13:05 -04:00
|
|
|
|
2013-06-21 08:58:15 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2011-07-26 18:25:49 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-09-01 14:53:41 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2016-05-30 16:48:35 +02:00
|
|
|
|
2014-09-01 07:12:07 -04:00
|
|
|
|
2011-12-26 10:25:26 -08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-01-03 17:14:34 +02:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2018-01-03 17:14:34 +02:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-03-19 17:01:00 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-22 10:18:44 -04:00
|
|
|
|
2015-09-21 09:43:06 +02:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2014-08-22 10:18:44 -04:00
|
|
|
|
2015-09-21 09:43:06 +02:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2015-11-18 21:40:33 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2014-08-22 10:18:44 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-09-14 07:48:06 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-09-16 12:44:20 +02:00
|
|
|
|
2015-09-21 09:43:06 +02:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-09-01 07:12:07 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-09-21 09:43:06 +02:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2016-10-08 10:12:28 +02:00
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2016-09-16 12:44:20 +02:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-07-26 18:25:49 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2016-10-08 10:12:28 +02:00
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-02-03 12:13:06 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-08-09 18:43:17 -07:00
|
|
|
|
2014-02-03 12:13:06 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-21 19:17:03 +01:00
|
|
|
|
2014-02-03 12:13:06 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-21 19:17:03 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-09-16 12:44:21 +02:00
|
|
|
|
|
|
|
|
|
2014-02-03 12:13:06 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-22 10:40:25 -04:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2006-12-08 02:36:35 -08:00
|
|
|
|
2016-09-16 12:44:20 +02:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2012-03-05 13:18:59 -05:00
|
|
|
|
2011-08-19 10:59:49 -04:00
|
|
|
|
2014-09-01 07:12:07 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2010-10-30 17:31:14 -04:00
|
|
|
|
2014-05-09 14:13:05 -04:00
|
|
|
|
|
|
|
|
|
2015-04-03 09:04:03 -04:00
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-03-05 13:18:59 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-01-22 15:40:57 -05:00
|
|
|
|
2012-03-05 13:18:59 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-01-22 15:40:57 -05:00
|
|
|
|
2012-03-05 13:18:59 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-10-30 17:31:14 -04:00
|
|
|
|
2016-05-30 16:48:35 +02:00
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2014-09-01 07:12:07 -04:00
|
|
|
|
2015-01-21 19:17:03 +01:00
|
|
|
|
2014-02-03 12:13:06 -05:00
|
|
|
|
2010-10-30 17:31:14 -04:00
|
|
|
|
2007-05-31 17:03:46 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-08-19 10:59:49 -04:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2015-01-21 19:14:02 +01:00
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2011-08-19 10:59:49 -04:00
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2011-08-19 10:59:49 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2015-03-04 17:34:32 -05:00
|
|
|
|
|
|
|
|
|
2014-08-22 10:55:47 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-16 14:32:03 -05:00
|
|
|
|
2014-02-03 12:13:06 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-21 19:17:03 +01:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2015-02-16 14:32:03 -05:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
|
|
|
|
|
2014-08-22 10:55:47 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2016-05-30 16:48:35 +02:00
|
|
|
|
2014-09-01 07:12:07 -04:00
|
|
|
|
2012-03-05 13:18:59 -05:00
|
|
|
|
2016-01-22 15:40:57 -05:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2014-08-22 10:55:47 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2011-09-21 08:34:32 -04:00
|
|
|
|
2015-01-21 19:14:02 +01:00
|
|
|
|
2011-09-21 08:34:32 -04:00
|
|
|
|
2014-08-22 10:18:45 -04:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2016-09-16 12:44:20 +02:00
|
|
|
|
2015-09-21 09:43:06 +02:00
|
|
|
|
2014-09-01 07:12:07 -04:00
|
|
|
|
2011-09-21 08:34:32 -04:00
|
|
|
|
2015-09-21 09:43:06 +02:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-05-30 16:48:35 +02:00
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2015-01-21 19:14:02 +01:00
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2014-08-22 10:18:45 -04:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2011-09-21 08:34:32 -04:00
|
|
|
|
2015-03-14 09:45:35 -04:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2016-05-30 16:48:35 +02:00
|
|
|
|
2014-09-01 07:12:07 -04:00
|
|
|
|
2014-08-22 10:18:45 -04:00
|
|
|
|
2011-09-21 08:34:32 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-22 10:55:47 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-09-21 08:34:32 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-22 10:40:25 -04:00
|
|
|
|
|
|
|
|
|
2011-09-21 08:34:32 -04:00
|
|
|
|
2016-09-16 12:44:20 +02:00
|
|
|
|
2011-09-21 08:34:32 -04:00
|
|
|
|
|
|
|
|
|
2012-03-03 21:17:15 -08:00
|
|
|
|
2011-09-21 08:34:32 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-21 19:14:02 +01:00
|
|
|
|
2011-09-21 08:34:32 -04:00
|
|
|
|
|
|
|
|
|
2014-08-22 10:18:45 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-21 19:17:03 +01:00
|
|
|
|
2014-08-22 10:40:25 -04:00
|
|
|
|
2011-09-21 08:34:32 -04:00
|
|
|
|
2012-07-13 13:35:36 -04:00
|
|
|
|
2011-09-21 08:34:32 -04:00
|
|
|
|
|
|
|
|
|
2007-07-31 00:39:22 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2010-09-18 15:09:31 +02:00
|
|
|
|
2014-08-22 18:13:28 -04:00
|
|
|
|
2014-08-22 10:55:47 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-22 18:13:28 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-05-27 06:07:18 -04:00
|
|
|
|
|
|
|
|
|
2014-08-22 18:13:28 -04:00
|
|
|
|
2014-08-22 10:55:47 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-08-22 10:40:25 -04:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2016-09-16 12:44:20 +02:00
|
|
|
|
2014-08-22 18:50:48 -04:00
|
|
|
|
2014-08-22 10:55:47 -04:00
|
|
|
|
2014-08-22 18:50:48 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-06-07 17:09:49 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2010-10-30 17:31:13 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-08-22 10:55:47 -04:00
|
|
|
|
2010-10-27 12:38:12 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2010-10-27 15:46:08 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2010-10-27 12:38:12 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-22 10:55:47 -04:00
|
|
|
|
2010-10-27 12:38:12 -04:00
|
|
|
|
2014-08-22 10:55:47 -04:00
|
|
|
|
2014-08-11 18:14:12 -04:00
|
|
|
|
|
|
|
|
|
2010-10-27 12:38:12 -04:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-10-30 17:31:13 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-21 19:14:02 +01:00
|
|
|
|
2010-10-30 17:31:13 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-07-11 06:43:02 -04:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2015-07-11 06:43:02 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-10-22 13:38:15 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-07-11 06:43:02 -04:00
|
|
|
|
2008-07-25 01:48:57 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-10-22 13:38:13 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-05-27 06:07:18 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2017-05-27 06:07:18 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-01-14 14:14:18 +01:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2012-08-28 12:52:22 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-08-28 12:52:22 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-09-02 15:28:45 -04:00
|
|
|
|
2012-08-28 12:52:22 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2014-09-04 10:25:06 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-09-04 10:25:06 -04:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-08-28 12:52:22 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-09-16 12:44:20 +02:00
|
|
|
|
2012-08-28 12:52:22 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-10-22 13:38:14 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2006-03-31 02:30:55 -08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2012-08-28 12:52:22 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-02-21 00:58:50 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-05-11 16:22:50 -04:00
|
|
|
|
2007-02-21 00:58:50 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-09-16 12:44:20 +02:00
|
|
|
|
2007-02-21 00:58:50 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fs/locks: Remove fl_nspid and use fs-specific l_pid for remote locks
Since commit c69899a17ca4 "NFSv4: Update of VFS byte range lock must be
atomic with the stateid update", NFSv4 has been inserting locks in rpciod
worker context. The result is that the file_lock's fl_nspid is the
kworker's pid instead of the original userspace pid.
The fl_nspid is only used to represent the namespaced virtual pid number
when displaying locks or returning from F_GETLK. There's no reason to set
it for every inserted lock, since we can usually just look it up from
fl_pid. So, instead of looking up and holding struct pid for every lock,
let's just look up the virtual pid number from fl_pid when it is needed.
That means we can remove fl_nspid entirely.
The translaton and presentation of fl_pid should handle the following four
cases:
1 - F_GETLK on a remote file with a remote lock:
In this case, the filesystem should determine the l_pid to return here.
Filesystems should indicate that the fl_pid represents a non-local pid
value that should not be translated by returning an fl_pid <= 0.
2 - F_GETLK on a local file with a remote lock:
This should be the l_pid of the lock manager process, and translated.
3 - F_GETLK on a remote file with a local lock, and
4 - F_GETLK on a local file with a local lock:
These should be the translated l_pid of the local locking process.
Fuse was already doing the correct thing by translating the pid into the
caller's namespace. With this change we must update fuse to translate
to init's pid namespace, so that the locks API can then translate from
init's pid namespace into the pid namespace of the caller.
With this change, the locks API will expect that if a filesystem returns
a remote pid as opposed to a local pid for F_GETLK, that remote pid will
be <= 0. This signifies that the pid is remote, and the locks API will
forego translating that pid into the pid namespace of the local calling
process.
Finally, we convert remote filesystems to present remote pids using
negative numbers. Have lustre, 9p, ceph, cifs, and dlm negate the remote
pid returned for F_GETLK lock requests.
Since local pids will never be larger than PID_MAX_LIMIT (which is
currently defined as <= 4 million), but pid_t is an unsigned int, we
should have plenty of room to represent remote pids with negative
numbers if we assume that remote pid numbers are similarly limited.
If this is not the case, then we run the risk of having a remote pid
returned for which there is also a corresponding local pid. This is a
problem we have now, but this patch should reduce the chances of that
occurring, while also returning those remote pid numbers, for whatever
that may be worth.
Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
Signed-off-by: Jeff Layton <jlayton@redhat.com>
2017-07-16 10:28:22 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-02-20 16:10:11 -05:00
|
|
|
|
|
|
|
|
|
fs/locks: Remove fl_nspid and use fs-specific l_pid for remote locks
Since commit c69899a17ca4 "NFSv4: Update of VFS byte range lock must be
atomic with the stateid update", NFSv4 has been inserting locks in rpciod
worker context. The result is that the file_lock's fl_nspid is the
kworker's pid instead of the original userspace pid.
The fl_nspid is only used to represent the namespaced virtual pid number
when displaying locks or returning from F_GETLK. There's no reason to set
it for every inserted lock, since we can usually just look it up from
fl_pid. So, instead of looking up and holding struct pid for every lock,
let's just look up the virtual pid number from fl_pid when it is needed.
That means we can remove fl_nspid entirely.
The translaton and presentation of fl_pid should handle the following four
cases:
1 - F_GETLK on a remote file with a remote lock:
In this case, the filesystem should determine the l_pid to return here.
Filesystems should indicate that the fl_pid represents a non-local pid
value that should not be translated by returning an fl_pid <= 0.
2 - F_GETLK on a local file with a remote lock:
This should be the l_pid of the lock manager process, and translated.
3 - F_GETLK on a remote file with a local lock, and
4 - F_GETLK on a local file with a local lock:
These should be the translated l_pid of the local locking process.
Fuse was already doing the correct thing by translating the pid into the
caller's namespace. With this change we must update fuse to translate
to init's pid namespace, so that the locks API can then translate from
init's pid namespace into the pid namespace of the caller.
With this change, the locks API will expect that if a filesystem returns
a remote pid as opposed to a local pid for F_GETLK, that remote pid will
be <= 0. This signifies that the pid is remote, and the locks API will
forego translating that pid into the pid namespace of the local calling
process.
Finally, we convert remote filesystems to present remote pids using
negative numbers. Have lustre, 9p, ceph, cifs, and dlm negate the remote
pid returned for F_GETLK lock requests.
Since local pids will never be larger than PID_MAX_LIMIT (which is
currently defined as <= 4 million), but pid_t is an unsigned int, we
should have plenty of room to represent remote pids with negative
numbers if we assume that remote pid numbers are similarly limited.
If this is not the case, then we run the risk of having a remote pid
returned for which there is also a corresponding local pid. This is a
problem we have now, but this patch should reduce the chances of that
occurring, while also returning those remote pid numbers, for whatever
that may be worth.
Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
Signed-off-by: Jeff Layton <jlayton@redhat.com>
2017-07-16 10:28:22 -04:00
|
|
|
|
2007-02-20 16:10:11 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-05-10 18:38:43 -04:00
|
|
|
|
2007-02-20 16:10:11 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fs/locks: Remove fl_nspid and use fs-specific l_pid for remote locks
Since commit c69899a17ca4 "NFSv4: Update of VFS byte range lock must be
atomic with the stateid update", NFSv4 has been inserting locks in rpciod
worker context. The result is that the file_lock's fl_nspid is the
kworker's pid instead of the original userspace pid.
The fl_nspid is only used to represent the namespaced virtual pid number
when displaying locks or returning from F_GETLK. There's no reason to set
it for every inserted lock, since we can usually just look it up from
fl_pid. So, instead of looking up and holding struct pid for every lock,
let's just look up the virtual pid number from fl_pid when it is needed.
That means we can remove fl_nspid entirely.
The translaton and presentation of fl_pid should handle the following four
cases:
1 - F_GETLK on a remote file with a remote lock:
In this case, the filesystem should determine the l_pid to return here.
Filesystems should indicate that the fl_pid represents a non-local pid
value that should not be translated by returning an fl_pid <= 0.
2 - F_GETLK on a local file with a remote lock:
This should be the l_pid of the lock manager process, and translated.
3 - F_GETLK on a remote file with a local lock, and
4 - F_GETLK on a local file with a local lock:
These should be the translated l_pid of the local locking process.
Fuse was already doing the correct thing by translating the pid into the
caller's namespace. With this change we must update fuse to translate
to init's pid namespace, so that the locks API can then translate from
init's pid namespace into the pid namespace of the caller.
With this change, the locks API will expect that if a filesystem returns
a remote pid as opposed to a local pid for F_GETLK, that remote pid will
be <= 0. This signifies that the pid is remote, and the locks API will
forego translating that pid into the pid namespace of the local calling
process.
Finally, we convert remote filesystems to present remote pids using
negative numbers. Have lustre, 9p, ceph, cifs, and dlm negate the remote
pid returned for F_GETLK lock requests.
Since local pids will never be larger than PID_MAX_LIMIT (which is
currently defined as <= 4 million), but pid_t is an unsigned int, we
should have plenty of room to represent remote pids with negative
numbers if we assume that remote pid numbers are similarly limited.
If this is not the case, then we run the risk of having a remote pid
returned for which there is also a corresponding local pid. This is a
problem we have now, but this patch should reduce the chances of that
occurring, while also returning those remote pid numbers, for whatever
that may be worth.
Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
Signed-off-by: Jeff Layton <jlayton@redhat.com>
2017-07-16 10:28:22 -04:00
|
|
|
|
2007-02-20 16:10:11 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-05-27 06:07:19 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2017-07-16 10:28:21 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2017-07-16 10:28:21 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2017-05-27 06:07:19 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2017-07-16 10:28:21 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-04-22 08:23:58 -04:00
|
|
|
|
2014-03-04 10:30:23 -05:00
|
|
|
|
2017-05-27 06:07:19 -04:00
|
|
|
|
2014-03-04 10:30:23 -05:00
|
|
|
|
|
|
|
|
|
2014-02-03 12:13:10 -05:00
|
|
|
|
2017-07-16 10:28:21 -04:00
|
|
|
|
|
|
|
|
|
2014-02-03 12:13:10 -05:00
|
|
|
|
|
|
|
|
|
2017-07-16 10:28:21 -04:00
|
|
|
|
2007-02-21 00:58:50 -05:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2017-07-16 10:28:21 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-02-20 16:10:11 -05:00
|
|
|
|
2017-07-16 10:28:21 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2017-07-16 10:28:21 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-01-18 15:08:55 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-01-18 16:15:35 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
locks: add fl_grant callback for asynchronous lock return
Acquiring a lock on a cluster filesystem may require communication with
remote hosts, and to avoid blocking lockd or nfsd threads during such
communication, we allow the results to be returned asynchronously.
When a ->lock() call needs to block, the file system will return
-EINPROGRESS, and then later return the results with a call to the
routine in the fl_grant field of the lock_manager_operations struct.
This differs from the case when ->lock returns -EAGAIN to a blocking
lock request; in that case, the filesystem calls fl_notify when the lock
is granted, and the caller retries the original lock. So while
fl_notify is merely a hint to the caller that it should retry, fl_grant
actually communicates the final result of the lock operation (with the
lock already acquired in the succesful case).
Therefore fl_grant takes a lock, a status and, for the test lock case, a
conflicting lock. We also allow fl_grant to return an error to the
filesystem, to handle the case where the fl_grant requests arrives after
the lock manager has already given up waiting for it.
Signed-off-by: Marc Eshel <eshel@almaden.ibm.com>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
2006-12-05 23:31:28 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-07-20 20:21:59 -04:00
|
|
|
|
locks: add fl_grant callback for asynchronous lock return
Acquiring a lock on a cluster filesystem may require communication with
remote hosts, and to avoid blocking lockd or nfsd threads during such
communication, we allow the results to be returned asynchronously.
When a ->lock() call needs to block, the file system will return
-EINPROGRESS, and then later return the results with a call to the
routine in the fl_grant field of the lock_manager_operations struct.
This differs from the case when ->lock returns -EAGAIN to a blocking
lock request; in that case, the filesystem calls fl_notify when the lock
is granted, and the caller retries the original lock. So while
fl_notify is merely a hint to the caller that it should retry, fl_grant
actually communicates the final result of the lock operation (with the
lock already acquired in the succesful case).
Therefore fl_grant takes a lock, a status and, for the test lock case, a
conflicting lock. We also allow fl_grant to return an error to the
filesystem, to handle the case where the fl_grant requests arrives after
the lock manager has already given up waiting for it.
Signed-off-by: Marc Eshel <eshel@almaden.ibm.com>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
2006-12-05 23:31:28 -05:00
|
|
|
|
|
|
|
|
|
2011-07-20 20:21:59 -04:00
|
|
|
|
locks: add fl_grant callback for asynchronous lock return
Acquiring a lock on a cluster filesystem may require communication with
remote hosts, and to avoid blocking lockd or nfsd threads during such
communication, we allow the results to be returned asynchronously.
When a ->lock() call needs to block, the file system will return
-EINPROGRESS, and then later return the results with a call to the
routine in the fl_grant field of the lock_manager_operations struct.
This differs from the case when ->lock returns -EAGAIN to a blocking
lock request; in that case, the filesystem calls fl_notify when the lock
is granted, and the caller retries the original lock. So while
fl_notify is merely a hint to the caller that it should retry, fl_grant
actually communicates the final result of the lock operation (with the
lock already acquired in the succesful case).
Therefore fl_grant takes a lock, a status and, for the test lock case, a
conflicting lock. We also allow fl_grant to return an error to the
filesystem, to handle the case where the fl_grant requests arrives after
the lock manager has already given up waiting for it.
Signed-off-by: Marc Eshel <eshel@almaden.ibm.com>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
2006-12-05 23:31:28 -05:00
|
|
|
|
|
|
|
|
|
2008-07-25 01:48:57 -07:00
|
|
|
|
|
|
|
|
|
locks: add fl_grant callback for asynchronous lock return
Acquiring a lock on a cluster filesystem may require communication with
remote hosts, and to avoid blocking lockd or nfsd threads during such
communication, we allow the results to be returned asynchronously.
When a ->lock() call needs to block, the file system will return
-EINPROGRESS, and then later return the results with a call to the
routine in the fl_grant field of the lock_manager_operations struct.
This differs from the case when ->lock returns -EAGAIN to a blocking
lock request; in that case, the filesystem calls fl_notify when the lock
is granted, and the caller retries the original lock. So while
fl_notify is merely a hint to the caller that it should retry, fl_grant
actually communicates the final result of the lock operation (with the
lock already acquired in the succesful case).
Therefore fl_grant takes a lock, a status and, for the test lock case, a
conflicting lock. We also allow fl_grant to return an error to the
filesystem, to handle the case where the fl_grant requests arrives after
the lock manager has already given up waiting for it.
Signed-off-by: Marc Eshel <eshel@almaden.ibm.com>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
2006-12-05 23:31:28 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-07-20 20:21:59 -04:00
|
|
|
|
locks: add fl_grant callback for asynchronous lock return
Acquiring a lock on a cluster filesystem may require communication with
remote hosts, and to avoid blocking lockd or nfsd threads during such
communication, we allow the results to be returned asynchronously.
When a ->lock() call needs to block, the file system will return
-EINPROGRESS, and then later return the results with a call to the
routine in the fl_grant field of the lock_manager_operations struct.
This differs from the case when ->lock returns -EAGAIN to a blocking
lock request; in that case, the filesystem calls fl_notify when the lock
is granted, and the caller retries the original lock. So while
fl_notify is merely a hint to the caller that it should retry, fl_grant
actually communicates the final result of the lock operation (with the
lock already acquired in the succesful case).
Therefore fl_grant takes a lock, a status and, for the test lock case, a
conflicting lock. We also allow fl_grant to return an error to the
filesystem, to handle the case where the fl_grant requests arrives after
the lock manager has already given up waiting for it.
Signed-off-by: Marc Eshel <eshel@almaden.ibm.com>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
2006-12-05 23:31:28 -05:00
|
|
|
|
2007-01-18 15:08:55 -05:00
|
|
|
|
2007-01-18 16:15:35 -05:00
|
|
|
|
2007-01-18 15:08:55 -05:00
|
|
|
|
2016-09-16 12:44:20 +02:00
|
|
|
|
2007-01-18 15:08:55 -05:00
|
|
|
|
|
|
|
|
|
2007-01-18 16:15:35 -05:00
|
|
|
|
2007-01-18 15:08:55 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-07-25 01:48:57 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-07-25 01:48:58 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-07-25 01:48:57 -07:00
|
|
|
|
2008-07-25 01:48:58 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-07-25 01:48:57 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-10-15 09:07:07 -04:00
|
|
|
|
2014-05-09 11:41:54 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[PATCH] stale POSIX lock handling
I believe that there is a problem with the handling of POSIX locks, which
the attached patch should address.
The problem appears to be a race between fcntl(2) and close(2). A
multithreaded application could close a file descriptor at the same time as
it is trying to acquire a lock using the same file descriptor. I would
suggest that that multithreaded application is not providing the proper
synchronization for itself, but the OS should still behave correctly.
SUS3 (Single UNIX Specification Version 3, read: POSIX) indicates that when
a file descriptor is closed, that all POSIX locks on the file, owned by the
process which closed the file descriptor, should be released.
The trick here is when those locks are released. The current code releases
all locks which exist when close is processing, but any locks in progress
are handled when the last reference to the open file is released.
There are three cases to consider.
One is the simple case, a multithreaded (mt) process has a file open and
races to close it and acquire a lock on it. In this case, the close will
release one reference to the open file and when the fcntl is done, it will
release the other reference. For this situation, no locks should exist on
the file when both the close and fcntl operations are done. The current
system will handle this case because the last reference to the open file is
being released.
The second case is when the mt process has dup(2)'d the file descriptor.
The close will release one reference to the file and the fcntl, when done,
will release another, but there will still be at least one more reference
to the open file. One could argue that the existence of a lock on the file
after the close has completed is okay, because it was acquired after the
close operation and there is still a way for the application to release the
lock on the file, using an existing file descriptor.
The third case is when the mt process has forked, after opening the file
and either before or after becoming an mt process. In this case, each
process would hold a reference to the open file. For each process, this
degenerates to first case above. However, the lock continues to exist
until both processes have released their references to the open file. This
lock could block other lock requests.
The changes to release the lock when the last reference to the open file
aren't quite right because they would allow the lock to exist as long as
there was a reference to the open file. This is too long.
The new proposed solution is to add support in the fcntl code path to
detect a race with close and then to release the lock which was just
acquired when such as race is detected. This causes locks to be released
in a timely fashion and for the system to conform to the POSIX semantic
specification.
This was tested by instrumenting a kernel to detect the handling locks and
then running a program which generates case #3 above. A dangling lock
could be reliably generated. When the changes to detect the close/fcntl
race were added, a dangling lock could no longer be generated.
Cc: Matthew Wilcox <willy@debian.org>
Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-07-27 11:45:09 -07:00
|
|
|
|
2017-05-27 06:07:19 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2017-05-27 06:07:19 -04:00
|
|
|
|
2008-05-06 13:58:34 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-10-01 14:41:11 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-05-27 06:07:19 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2014-02-03 12:13:10 -05:00
|
|
|
|
2014-05-09 11:41:54 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-02-03 12:13:10 -05:00
|
|
|
|
|
|
|
|
|
2014-04-22 08:24:32 -04:00
|
|
|
|
2014-02-03 12:13:10 -05:00
|
|
|
|
|
|
|
|
|
2014-04-22 08:23:58 -04:00
|
|
|
|
2014-03-04 10:30:23 -05:00
|
|
|
|
2017-05-27 06:07:19 -04:00
|
|
|
|
2014-03-04 10:30:23 -05:00
|
|
|
|
|
|
|
|
|
2014-02-03 12:13:10 -05:00
|
|
|
|
2014-04-22 08:24:32 -04:00
|
|
|
|
2014-07-13 17:00:38 +02:00
|
|
|
|
2014-02-03 12:13:10 -05:00
|
|
|
|
2014-04-22 08:23:58 -04:00
|
|
|
|
2014-03-04 10:30:23 -05:00
|
|
|
|
2017-05-27 06:07:19 -04:00
|
|
|
|
2014-03-04 10:30:23 -05:00
|
|
|
|
|
|
|
|
|
2014-02-03 12:13:10 -05:00
|
|
|
|
2014-04-22 08:24:32 -04:00
|
|
|
|
2014-07-13 17:00:38 +02:00
|
|
|
|
2014-02-03 12:13:10 -05:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2014-02-03 12:13:10 -05:00
|
|
|
|
2008-07-25 01:48:57 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
[PATCH] stale POSIX lock handling
I believe that there is a problem with the handling of POSIX locks, which
the attached patch should address.
The problem appears to be a race between fcntl(2) and close(2). A
multithreaded application could close a file descriptor at the same time as
it is trying to acquire a lock using the same file descriptor. I would
suggest that that multithreaded application is not providing the proper
synchronization for itself, but the OS should still behave correctly.
SUS3 (Single UNIX Specification Version 3, read: POSIX) indicates that when
a file descriptor is closed, that all POSIX locks on the file, owned by the
process which closed the file descriptor, should be released.
The trick here is when those locks are released. The current code releases
all locks which exist when close is processing, but any locks in progress
are handled when the last reference to the open file is released.
There are three cases to consider.
One is the simple case, a multithreaded (mt) process has a file open and
races to close it and acquire a lock on it. In this case, the close will
release one reference to the open file and when the fcntl is done, it will
release the other reference. For this situation, no locks should exist on
the file when both the close and fcntl operations are done. The current
system will handle this case because the last reference to the open file is
being released.
The second case is when the mt process has dup(2)'d the file descriptor.
The close will release one reference to the file and the fcntl, when done,
will release another, but there will still be at least one more reference
to the open file. One could argue that the existence of a lock on the file
after the close has completed is okay, because it was acquired after the
close operation and there is still a way for the application to release the
lock on the file, using an existing file descriptor.
The third case is when the mt process has forked, after opening the file
and either before or after becoming an mt process. In this case, each
process would hold a reference to the open file. For each process, this
degenerates to first case above. However, the lock continues to exist
until both processes have released their references to the open file. This
lock could block other lock requests.
The changes to release the lock when the last reference to the open file
aren't quite right because they would allow the lock to exist as long as
there was a reference to the open file. This is too long.
The new proposed solution is to add support in the fcntl code path to
detect a race with close and then to release the lock which was just
acquired when such as race is detected. This causes locks to be released
in a timely fashion and for the system to conform to the POSIX semantic
specification.
This was tested by instrumenting a kernel to detect the handling locks and
then running a program which generates case #3 above. A dangling lock
could be reliably generated. When the changes to detect the close/fcntl
race were added, a dangling lock could no longer be generated.
Cc: Matthew Wilcox <willy@debian.org>
Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-07-27 11:45:09 -07:00
|
|
|
|
2016-01-08 07:30:43 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[PATCH] stale POSIX lock handling
I believe that there is a problem with the handling of POSIX locks, which
the attached patch should address.
The problem appears to be a race between fcntl(2) and close(2). A
multithreaded application could close a file descriptor at the same time as
it is trying to acquire a lock using the same file descriptor. I would
suggest that that multithreaded application is not providing the proper
synchronization for itself, but the OS should still behave correctly.
SUS3 (Single UNIX Specification Version 3, read: POSIX) indicates that when
a file descriptor is closed, that all POSIX locks on the file, owned by the
process which closed the file descriptor, should be released.
The trick here is when those locks are released. The current code releases
all locks which exist when close is processing, but any locks in progress
are handled when the last reference to the open file is released.
There are three cases to consider.
One is the simple case, a multithreaded (mt) process has a file open and
races to close it and acquire a lock on it. In this case, the close will
release one reference to the open file and when the fcntl is done, it will
release the other reference. For this situation, no locks should exist on
the file when both the close and fcntl operations are done. The current
system will handle this case because the last reference to the open file is
being released.
The second case is when the mt process has dup(2)'d the file descriptor.
The close will release one reference to the file and the fcntl, when done,
will release another, but there will still be at least one more reference
to the open file. One could argue that the existence of a lock on the file
after the close has completed is okay, because it was acquired after the
close operation and there is still a way for the application to release the
lock on the file, using an existing file descriptor.
The third case is when the mt process has forked, after opening the file
and either before or after becoming an mt process. In this case, each
process would hold a reference to the open file. For each process, this
degenerates to first case above. However, the lock continues to exist
until both processes have released their references to the open file. This
lock could block other lock requests.
The changes to release the lock when the last reference to the open file
aren't quite right because they would allow the lock to exist as long as
there was a reference to the open file. This is too long.
The new proposed solution is to add support in the fcntl code path to
detect a race with close and then to release the lock which was just
acquired when such as race is detected. This causes locks to be released
in a timely fashion and for the system to conform to the POSIX semantic
specification.
This was tested by instrumenting a kernel to detect the handling locks and
then running a program which generates case #3 above. A dangling lock
could be reliably generated. When the changes to detect the close/fcntl
race were added, a dangling lock could no longer be generated.
Cc: Matthew Wilcox <willy@debian.org>
Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-07-27 11:45:09 -07:00
|
|
|
|
2016-01-08 07:30:43 -05:00
|
|
|
|
|
|
|
|
|
2016-01-07 16:38:10 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
[PATCH] stale POSIX lock handling
I believe that there is a problem with the handling of POSIX locks, which
the attached patch should address.
The problem appears to be a race between fcntl(2) and close(2). A
multithreaded application could close a file descriptor at the same time as
it is trying to acquire a lock using the same file descriptor. I would
suggest that that multithreaded application is not providing the proper
synchronization for itself, but the OS should still behave correctly.
SUS3 (Single UNIX Specification Version 3, read: POSIX) indicates that when
a file descriptor is closed, that all POSIX locks on the file, owned by the
process which closed the file descriptor, should be released.
The trick here is when those locks are released. The current code releases
all locks which exist when close is processing, but any locks in progress
are handled when the last reference to the open file is released.
There are three cases to consider.
One is the simple case, a multithreaded (mt) process has a file open and
races to close it and acquire a lock on it. In this case, the close will
release one reference to the open file and when the fcntl is done, it will
release the other reference. For this situation, no locks should exist on
the file when both the close and fcntl operations are done. The current
system will handle this case because the last reference to the open file is
being released.
The second case is when the mt process has dup(2)'d the file descriptor.
The close will release one reference to the file and the fcntl, when done,
will release another, but there will still be at least one more reference
to the open file. One could argue that the existence of a lock on the file
after the close has completed is okay, because it was acquired after the
close operation and there is still a way for the application to release the
lock on the file, using an existing file descriptor.
The third case is when the mt process has forked, after opening the file
and either before or after becoming an mt process. In this case, each
process would hold a reference to the open file. For each process, this
degenerates to first case above. However, the lock continues to exist
until both processes have released their references to the open file. This
lock could block other lock requests.
The changes to release the lock when the last reference to the open file
aren't quite right because they would allow the lock to exist as long as
there was a reference to the open file. This is too long.
The new proposed solution is to add support in the fcntl code path to
detect a race with close and then to release the lock which was just
acquired when such as race is detected. This causes locks to be released
in a timely fashion and for the system to conform to the POSIX semantic
specification.
This was tested by instrumenting a kernel to detect the handling locks and
then running a program which generates case #3 above. A dangling lock
could be reliably generated. When the changes to detect the close/fcntl
race were added, a dangling lock could no longer be generated.
Cc: Matthew Wilcox <willy@debian.org>
Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-07-27 11:45:09 -07:00
|
|
|
|
2016-01-06 21:26:10 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-05-27 06:07:19 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2017-07-16 10:28:21 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2017-07-16 10:28:21 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2017-05-27 06:07:19 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2017-07-16 10:28:21 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-04-22 08:23:58 -04:00
|
|
|
|
2014-03-04 10:30:23 -05:00
|
|
|
|
2017-05-27 06:07:19 -04:00
|
|
|
|
2014-03-04 10:30:23 -05:00
|
|
|
|
|
|
|
|
|
2014-02-03 12:13:10 -05:00
|
|
|
|
2017-07-16 10:28:21 -04:00
|
|
|
|
|
|
|
|
|
2014-02-03 12:13:10 -05:00
|
|
|
|
|
|
|
|
|
2017-07-16 10:28:21 -04:00
|
|
|
|
2007-02-21 00:58:50 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-07-16 10:28:21 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-22 10:18:43 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2017-07-16 10:28:21 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[PATCH] stale POSIX lock handling
I believe that there is a problem with the handling of POSIX locks, which
the attached patch should address.
The problem appears to be a race between fcntl(2) and close(2). A
multithreaded application could close a file descriptor at the same time as
it is trying to acquire a lock using the same file descriptor. I would
suggest that that multithreaded application is not providing the proper
synchronization for itself, but the OS should still behave correctly.
SUS3 (Single UNIX Specification Version 3, read: POSIX) indicates that when
a file descriptor is closed, that all POSIX locks on the file, owned by the
process which closed the file descriptor, should be released.
The trick here is when those locks are released. The current code releases
all locks which exist when close is processing, but any locks in progress
are handled when the last reference to the open file is released.
There are three cases to consider.
One is the simple case, a multithreaded (mt) process has a file open and
races to close it and acquire a lock on it. In this case, the close will
release one reference to the open file and when the fcntl is done, it will
release the other reference. For this situation, no locks should exist on
the file when both the close and fcntl operations are done. The current
system will handle this case because the last reference to the open file is
being released.
The second case is when the mt process has dup(2)'d the file descriptor.
The close will release one reference to the file and the fcntl, when done,
will release another, but there will still be at least one more reference
to the open file. One could argue that the existence of a lock on the file
after the close has completed is okay, because it was acquired after the
close operation and there is still a way for the application to release the
lock on the file, using an existing file descriptor.
The third case is when the mt process has forked, after opening the file
and either before or after becoming an mt process. In this case, each
process would hold a reference to the open file. For each process, this
degenerates to first case above. However, the lock continues to exist
until both processes have released their references to the open file. This
lock could block other lock requests.
The changes to release the lock when the last reference to the open file
aren't quite right because they would allow the lock to exist as long as
there was a reference to the open file. This is too long.
The new proposed solution is to add support in the fcntl code path to
detect a race with close and then to release the lock which was just
acquired when such as race is detected. This causes locks to be released
in a timely fashion and for the system to conform to the POSIX semantic
specification.
This was tested by instrumenting a kernel to detect the handling locks and
then running a program which generates case #3 above. A dangling lock
could be reliably generated. When the changes to detect the close/fcntl
race were added, a dangling lock could no longer be generated.
Cc: Matthew Wilcox <willy@debian.org>
Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-07-27 11:45:09 -07:00
|
|
|
|
2017-05-27 06:07:19 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2017-05-27 06:07:19 -04:00
|
|
|
|
2008-05-06 13:58:34 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-10-01 14:41:11 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-05-27 06:07:19 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2014-02-03 12:13:10 -05:00
|
|
|
|
2014-05-09 11:41:54 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-02-03 12:13:10 -05:00
|
|
|
|
|
|
|
|
|
2014-04-22 08:24:32 -04:00
|
|
|
|
2014-02-03 12:13:10 -05:00
|
|
|
|
|
|
|
|
|
2014-04-22 08:23:58 -04:00
|
|
|
|
2014-03-04 10:30:23 -05:00
|
|
|
|
2017-05-27 06:07:19 -04:00
|
|
|
|
2014-03-04 10:30:23 -05:00
|
|
|
|
|
|
|
|
|
2014-02-03 12:13:10 -05:00
|
|
|
|
2014-04-22 08:24:32 -04:00
|
|
|
|
2014-07-13 17:00:38 +02:00
|
|
|
|
2014-02-03 12:13:10 -05:00
|
|
|
|
2014-04-22 08:23:58 -04:00
|
|
|
|
2014-03-04 10:30:23 -05:00
|
|
|
|
2017-05-27 06:07:19 -04:00
|
|
|
|
2014-03-04 10:30:23 -05:00
|
|
|
|
|
|
|
|
|
2014-02-03 12:13:10 -05:00
|
|
|
|
2014-04-22 08:24:32 -04:00
|
|
|
|
2014-07-13 17:00:38 +02:00
|
|
|
|
2014-02-03 12:13:10 -05:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2014-02-03 12:13:10 -05:00
|
|
|
|
2008-07-25 01:48:57 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
[PATCH] stale POSIX lock handling
I believe that there is a problem with the handling of POSIX locks, which
the attached patch should address.
The problem appears to be a race between fcntl(2) and close(2). A
multithreaded application could close a file descriptor at the same time as
it is trying to acquire a lock using the same file descriptor. I would
suggest that that multithreaded application is not providing the proper
synchronization for itself, but the OS should still behave correctly.
SUS3 (Single UNIX Specification Version 3, read: POSIX) indicates that when
a file descriptor is closed, that all POSIX locks on the file, owned by the
process which closed the file descriptor, should be released.
The trick here is when those locks are released. The current code releases
all locks which exist when close is processing, but any locks in progress
are handled when the last reference to the open file is released.
There are three cases to consider.
One is the simple case, a multithreaded (mt) process has a file open and
races to close it and acquire a lock on it. In this case, the close will
release one reference to the open file and when the fcntl is done, it will
release the other reference. For this situation, no locks should exist on
the file when both the close and fcntl operations are done. The current
system will handle this case because the last reference to the open file is
being released.
The second case is when the mt process has dup(2)'d the file descriptor.
The close will release one reference to the file and the fcntl, when done,
will release another, but there will still be at least one more reference
to the open file. One could argue that the existence of a lock on the file
after the close has completed is okay, because it was acquired after the
close operation and there is still a way for the application to release the
lock on the file, using an existing file descriptor.
The third case is when the mt process has forked, after opening the file
and either before or after becoming an mt process. In this case, each
process would hold a reference to the open file. For each process, this
degenerates to first case above. However, the lock continues to exist
until both processes have released their references to the open file. This
lock could block other lock requests.
The changes to release the lock when the last reference to the open file
aren't quite right because they would allow the lock to exist as long as
there was a reference to the open file. This is too long.
The new proposed solution is to add support in the fcntl code path to
detect a race with close and then to release the lock which was just
acquired when such as race is detected. This causes locks to be released
in a timely fashion and for the system to conform to the POSIX semantic
specification.
This was tested by instrumenting a kernel to detect the handling locks and
then running a program which generates case #3 above. A dangling lock
could be reliably generated. When the changes to detect the close/fcntl
race were added, a dangling lock could no longer be generated.
Cc: Matthew Wilcox <willy@debian.org>
Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-07-27 11:45:09 -07:00
|
|
|
|
2016-01-08 07:30:43 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[PATCH] stale POSIX lock handling
I believe that there is a problem with the handling of POSIX locks, which
the attached patch should address.
The problem appears to be a race between fcntl(2) and close(2). A
multithreaded application could close a file descriptor at the same time as
it is trying to acquire a lock using the same file descriptor. I would
suggest that that multithreaded application is not providing the proper
synchronization for itself, but the OS should still behave correctly.
SUS3 (Single UNIX Specification Version 3, read: POSIX) indicates that when
a file descriptor is closed, that all POSIX locks on the file, owned by the
process which closed the file descriptor, should be released.
The trick here is when those locks are released. The current code releases
all locks which exist when close is processing, but any locks in progress
are handled when the last reference to the open file is released.
There are three cases to consider.
One is the simple case, a multithreaded (mt) process has a file open and
races to close it and acquire a lock on it. In this case, the close will
release one reference to the open file and when the fcntl is done, it will
release the other reference. For this situation, no locks should exist on
the file when both the close and fcntl operations are done. The current
system will handle this case because the last reference to the open file is
being released.
The second case is when the mt process has dup(2)'d the file descriptor.
The close will release one reference to the file and the fcntl, when done,
will release another, but there will still be at least one more reference
to the open file. One could argue that the existence of a lock on the file
after the close has completed is okay, because it was acquired after the
close operation and there is still a way for the application to release the
lock on the file, using an existing file descriptor.
The third case is when the mt process has forked, after opening the file
and either before or after becoming an mt process. In this case, each
process would hold a reference to the open file. For each process, this
degenerates to first case above. However, the lock continues to exist
until both processes have released their references to the open file. This
lock could block other lock requests.
The changes to release the lock when the last reference to the open file
aren't quite right because they would allow the lock to exist as long as
there was a reference to the open file. This is too long.
The new proposed solution is to add support in the fcntl code path to
detect a race with close and then to release the lock which was just
acquired when such as race is detected. This causes locks to be released
in a timely fashion and for the system to conform to the POSIX semantic
specification.
This was tested by instrumenting a kernel to detect the handling locks and
then running a program which generates case #3 above. A dangling lock
could be reliably generated. When the changes to detect the close/fcntl
race were added, a dangling lock could no longer be generated.
Cc: Matthew Wilcox <willy@debian.org>
Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-07-27 11:45:09 -07:00
|
|
|
|
2016-01-08 07:30:43 -05:00
|
|
|
|
|
|
|
|
|
2016-01-07 16:38:10 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-01-06 21:26:10 -05:00
|
|
|
|
2016-09-16 12:44:20 +02:00
|
|
|
|
2006-06-23 02:05:11 -07:00
|
|
|
|
2015-09-21 09:43:06 +02:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-09-16 12:44:20 +02:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-06-23 02:05:12 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-01-06 21:26:10 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-09-16 12:44:20 +02:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:58 -05:00
|
|
|
|
2015-01-16 15:05:54 -05:00
|
|
|
|
2015-09-21 09:43:06 +02:00
|
|
|
|
2015-01-16 15:05:54 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-04-11 12:50:09 -04:00
|
|
|
|
2015-01-16 15:05:54 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-09-16 12:44:20 +02:00
|
|
|
|
2015-01-16 15:05:54 -05:00
|
|
|
|
2015-01-16 15:05:58 -05:00
|
|
|
|
2015-01-16 15:05:54 -05:00
|
|
|
|
|
|
|
|
|
2016-09-16 12:44:20 +02:00
|
|
|
|
2015-01-16 15:05:54 -05:00
|
|
|
|
|
|
|
|
|
2015-07-11 06:43:02 -04:00
|
|
|
|
2015-01-16 15:05:54 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:58 -05:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2015-09-21 09:43:06 +02:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:58 -05:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
|
|
|
|
|
2016-10-08 10:12:28 +02:00
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2015-02-16 19:37:42 -05:00
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:57 -05:00
|
|
|
|
2016-10-08 10:12:28 +02:00
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-02-03 12:13:08 -05:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-09-21 09:43:06 +02:00
|
|
|
|
|
|
|
|
|
2016-09-16 12:44:20 +02:00
|
|
|
|
2015-09-21 09:43:06 +02:00
|
|
|
|
2015-01-16 15:05:58 -05:00
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:54 -05:00
|
|
|
|
2014-07-13 17:00:38 +02:00
|
|
|
|
2014-02-03 12:13:10 -05:00
|
|
|
|
2015-01-16 15:05:54 -05:00
|
|
|
|
2015-09-21 09:43:06 +02:00
|
|
|
|
2015-01-16 15:05:54 -05:00
|
|
|
|
2015-01-16 15:05:55 -05:00
|
|
|
|
2015-09-21 09:43:06 +02:00
|
|
|
|
2017-07-21 13:36:25 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-01-03 09:55:46 +01:00
|
|
|
|
2013-06-21 08:58:09 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-01-03 09:55:46 +01:00
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:20 -04:00
|
|
|
|
2006-01-03 09:55:44 +01:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-01-03 09:55:46 +01:00
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:20 -04:00
|
|
|
|
2006-01-03 09:55:46 +01:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-01-18 17:52:58 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-09-16 12:44:20 +02:00
|
|
|
|
2007-01-18 17:52:58 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-10-01 14:41:15 -07:00
|
|
|
|
2008-10-04 22:34:18 +04:00
|
|
|
|
2007-10-01 14:41:15 -07:00
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:22 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-10-01 14:41:15 -07:00
|
|
|
|
2010-10-26 14:22:33 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2008-01-17 00:07:08 +00:00
|
|
|
|
fs/locks: Remove fl_nspid and use fs-specific l_pid for remote locks
Since commit c69899a17ca4 "NFSv4: Update of VFS byte range lock must be
atomic with the stateid update", NFSv4 has been inserting locks in rpciod
worker context. The result is that the file_lock's fl_nspid is the
kworker's pid instead of the original userspace pid.
The fl_nspid is only used to represent the namespaced virtual pid number
when displaying locks or returning from F_GETLK. There's no reason to set
it for every inserted lock, since we can usually just look it up from
fl_pid. So, instead of looking up and holding struct pid for every lock,
let's just look up the virtual pid number from fl_pid when it is needed.
That means we can remove fl_nspid entirely.
The translaton and presentation of fl_pid should handle the following four
cases:
1 - F_GETLK on a remote file with a remote lock:
In this case, the filesystem should determine the l_pid to return here.
Filesystems should indicate that the fl_pid represents a non-local pid
value that should not be translated by returning an fl_pid <= 0.
2 - F_GETLK on a local file with a remote lock:
This should be the l_pid of the lock manager process, and translated.
3 - F_GETLK on a remote file with a local lock, and
4 - F_GETLK on a local file with a local lock:
These should be the translated l_pid of the local locking process.
Fuse was already doing the correct thing by translating the pid into the
caller's namespace. With this change we must update fuse to translate
to init's pid namespace, so that the locks API can then translate from
init's pid namespace into the pid namespace of the caller.
With this change, the locks API will expect that if a filesystem returns
a remote pid as opposed to a local pid for F_GETLK, that remote pid will
be <= 0. This signifies that the pid is remote, and the locks API will
forego translating that pid into the pid namespace of the local calling
process.
Finally, we convert remote filesystems to present remote pids using
negative numbers. Have lustre, 9p, ceph, cifs, and dlm negate the remote
pid returned for F_GETLK lock requests.
Since local pids will never be larger than PID_MAX_LIMIT (which is
currently defined as <= 4 million), but pid_t is an unsigned int, we
should have plenty of room to represent remote pids with negative
numbers if we assume that remote pid numbers are similarly limited.
If this is not the case, then we run the risk of having a remote pid
returned for which there is also a corresponding local pid. This is a
problem we have now, but this patch should reduce the chances of that
occurring, while also returning those remote pid numbers, for whatever
that may be worth.
Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
Signed-off-by: Jeff Layton <jlayton@redhat.com>
2017-07-16 10:28:22 -04:00
|
|
|
|
2008-01-17 00:07:08 +00:00
|
|
|
|
fs/locks: Remove fl_nspid and use fs-specific l_pid for remote locks
Since commit c69899a17ca4 "NFSv4: Update of VFS byte range lock must be
atomic with the stateid update", NFSv4 has been inserting locks in rpciod
worker context. The result is that the file_lock's fl_nspid is the
kworker's pid instead of the original userspace pid.
The fl_nspid is only used to represent the namespaced virtual pid number
when displaying locks or returning from F_GETLK. There's no reason to set
it for every inserted lock, since we can usually just look it up from
fl_pid. So, instead of looking up and holding struct pid for every lock,
let's just look up the virtual pid number from fl_pid when it is needed.
That means we can remove fl_nspid entirely.
The translaton and presentation of fl_pid should handle the following four
cases:
1 - F_GETLK on a remote file with a remote lock:
In this case, the filesystem should determine the l_pid to return here.
Filesystems should indicate that the fl_pid represents a non-local pid
value that should not be translated by returning an fl_pid <= 0.
2 - F_GETLK on a local file with a remote lock:
This should be the l_pid of the lock manager process, and translated.
3 - F_GETLK on a remote file with a local lock, and
4 - F_GETLK on a local file with a local lock:
These should be the translated l_pid of the local locking process.
Fuse was already doing the correct thing by translating the pid into the
caller's namespace. With this change we must update fuse to translate
to init's pid namespace, so that the locks API can then translate from
init's pid namespace into the pid namespace of the caller.
With this change, the locks API will expect that if a filesystem returns
a remote pid as opposed to a local pid for F_GETLK, that remote pid will
be <= 0. This signifies that the pid is remote, and the locks API will
forego translating that pid into the pid namespace of the local calling
process.
Finally, we convert remote filesystems to present remote pids using
negative numbers. Have lustre, 9p, ceph, cifs, and dlm negate the remote
pid returned for F_GETLK lock requests.
Since local pids will never be larger than PID_MAX_LIMIT (which is
currently defined as <= 4 million), but pid_t is an unsigned int, we
should have plenty of room to represent remote pids with negative
numbers if we assume that remote pid numbers are similarly limited.
If this is not the case, then we run the risk of having a remote pid
returned for which there is also a corresponding local pid. This is a
problem we have now, but this patch should reduce the chances of that
occurring, while also returning those remote pid numbers, for whatever
that may be worth.
Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
Signed-off-by: Jeff Layton <jlayton@redhat.com>
2017-07-16 10:28:22 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2016-09-16 12:44:20 +02:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2010-10-26 14:22:33 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-02-03 12:13:09 -05:00
|
|
|
|
2014-05-09 14:13:05 -04:00
|
|
|
|
2014-04-22 08:24:32 -04:00
|
|
|
|
2014-05-09 14:13:05 -04:00
|
|
|
|
2014-02-03 12:13:09 -05:00
|
|
|
|
2014-05-09 14:13:05 -04:00
|
|
|
|
2014-02-03 12:13:09 -05:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-10-01 14:41:11 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2014-05-09 14:13:05 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-05-09 14:13:05 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2014-08-11 13:36:54 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-07-26 20:10:51 -04:00
|
|
|
|
2014-05-09 14:13:05 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-05-09 14:13:05 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-05-09 14:13:05 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-05-09 14:13:05 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2007-10-01 14:41:15 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-10-01 14:41:15 -07:00
|
|
|
|
2011-07-26 20:10:51 -04:00
|
|
|
|
2012-08-02 15:46:30 -04:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2015-04-03 09:04:04 -04:00
|
|
|
|
2008-01-17 00:07:08 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-01-17 00:07:08 +00:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-10-01 14:41:15 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-10-01 14:41:15 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-05-09 14:13:05 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-10-01 14:41:15 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2013-06-21 08:58:22 -04:00
|
|
|
|
2007-10-01 14:41:15 -07:00
|
|
|
|
2016-08-17 16:18:46 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2013-06-21 08:58:17 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
fs/locks: Remove fl_nspid and use fs-specific l_pid for remote locks
Since commit c69899a17ca4 "NFSv4: Update of VFS byte range lock must be
atomic with the stateid update", NFSv4 has been inserting locks in rpciod
worker context. The result is that the file_lock's fl_nspid is the
kworker's pid instead of the original userspace pid.
The fl_nspid is only used to represent the namespaced virtual pid number
when displaying locks or returning from F_GETLK. There's no reason to set
it for every inserted lock, since we can usually just look it up from
fl_pid. So, instead of looking up and holding struct pid for every lock,
let's just look up the virtual pid number from fl_pid when it is needed.
That means we can remove fl_nspid entirely.
The translaton and presentation of fl_pid should handle the following four
cases:
1 - F_GETLK on a remote file with a remote lock:
In this case, the filesystem should determine the l_pid to return here.
Filesystems should indicate that the fl_pid represents a non-local pid
value that should not be translated by returning an fl_pid <= 0.
2 - F_GETLK on a local file with a remote lock:
This should be the l_pid of the lock manager process, and translated.
3 - F_GETLK on a remote file with a local lock, and
4 - F_GETLK on a local file with a local lock:
These should be the translated l_pid of the local locking process.
Fuse was already doing the correct thing by translating the pid into the
caller's namespace. With this change we must update fuse to translate
to init's pid namespace, so that the locks API can then translate from
init's pid namespace into the pid namespace of the caller.
With this change, the locks API will expect that if a filesystem returns
a remote pid as opposed to a local pid for F_GETLK, that remote pid will
be <= 0. This signifies that the pid is remote, and the locks API will
forego translating that pid into the pid namespace of the local calling
process.
Finally, we convert remote filesystems to present remote pids using
negative numbers. Have lustre, 9p, ceph, cifs, and dlm negate the remote
pid returned for F_GETLK lock requests.
Since local pids will never be larger than PID_MAX_LIMIT (which is
currently defined as <= 4 million), but pid_t is an unsigned int, we
should have plenty of room to represent remote pids with negative
numbers if we assume that remote pid numbers are similarly limited.
If this is not the case, then we run the risk of having a remote pid
returned for which there is also a corresponding local pid. This is a
problem we have now, but this patch should reduce the chances of that
occurring, while also returning those remote pid numbers, for whatever
that may be worth.
Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
Signed-off-by: Jeff Layton <jlayton@redhat.com>
2017-07-16 10:28:22 -04:00
|
|
|
|
2016-08-17 16:18:46 -04:00
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:22 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-10-01 14:41:15 -07:00
|
|
|
|
2013-06-21 08:58:22 -04:00
|
|
|
|
2007-10-02 11:21:34 -07:00
|
|
|
|
2007-10-01 14:41:15 -07:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2015-04-16 12:49:38 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-09-16 12:44:20 +02:00
|
|
|
|
2015-04-16 12:49:38 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-09-21 09:43:06 +02:00
|
|
|
|
2015-04-16 12:49:38 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-10-01 14:41:15 -07:00
|
|
|
|
2014-02-03 12:13:07 -05:00
|
|
|
|
2007-10-01 14:41:15 -07:00
|
|
|
|
2013-06-21 08:58:22 -04:00
|
|
|
|
2010-10-26 14:22:33 -07:00
|
|
|
|
2013-06-21 08:58:22 -04:00
|
|
|
|
2015-06-22 14:16:33 +02:00
|
|
|
|
2013-06-21 08:58:20 -04:00
|
|
|
|
2015-06-22 14:16:34 +02:00
|
|
|
|
2007-10-01 14:41:15 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-10-01 14:41:15 -07:00
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:22 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-06-22 14:16:34 +02:00
|
|
|
|
2007-10-01 14:41:15 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-10-01 14:41:15 -07:00
|
|
|
|
2014-02-03 12:13:07 -05:00
|
|
|
|
2007-10-01 14:41:15 -07:00
|
|
|
|
2013-06-21 08:58:20 -04:00
|
|
|
|
2015-06-22 14:16:33 +02:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2008-10-04 22:34:18 +04:00
|
|
|
|
2007-10-01 14:41:15 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-10-04 22:34:18 +04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:22 -04:00
|
|
|
|
|
|
|
|
|
2008-10-04 22:34:18 +04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-10-26 14:22:33 -07:00
|
|
|
|
2008-10-04 22:34:18 +04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-12-17 14:11:03 -05:00
|
|
|
|
2007-10-01 14:41:15 -07:00
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:22 -04:00
|
|
|
|
|
|
|
|
|
2015-01-16 15:05:54 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2011-07-07 13:06:09 +02:00
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:22 -04:00
|
|
|
|
2015-06-22 14:16:34 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-06-21 08:58:22 -04:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|