Re: [PATCH] Make POSIX locks compatible with the NPTL thread model

From: Andreas Gruenbacher
Date: Thu Jun 24 2004 - 06:55:47 EST


Hi Trond,

On Wednesday 23 June 2004 19:07, Trond Myklebust wrote:
> Hi,
>
> At some point in 2.5.x we introduced the NPTL thread model at the kernel
> level, and hence redefined the idea of a process: a process appears
> currently to be defined as one or more threads with the same tgid...
> However we failed to completely update the POSIX locking code to reflect
> that change: currently, the POSIX locking code defines the process to be
> a set of one or more threads with the same tgid and a shared file
> table...
>
> As a result we end up with abominations like the steal_locks() function
> that is required in order to move the locks from from one file table to
> another on exec etc.

Nice to see you working on this. I briefly looked into how to fix the same
thing but didn't find the time to finish it. Here is what I thought; maybe
it's useful to you.

There are local and remote locks, and both of them need a pid discriminator.
We have used the files_struct pointer so far which was either a struct
files_struct pointer or a struct nlm_host pointer. By using pointers we had a
host+pid "uniquifier". Now we could change the fields from:

struct file_lock {
[...]
fl_owner_t fl_owner;
unsigned int fl_pid;
[...]
};

to:

struct file_lock {
[...]
struct nlm_host *fl_host; /* NULL for local locks */
unsigned int fl_pid;
[...]
};

There would be no casting of other types into a fl_host here.

Cheers,
--
Andreas Gruenbacher <agruen@xxxxxxx>
SUSE Labs, SUSE LINUX AG
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/