Messages in this thread | | | From | Andreas Gruenbacher <> | Subject | Re: [PATCH] Make POSIX locks compatible with the NPTL thread model | Date | Thu, 24 Jun 2004 13:56:19 +0200 |
| |
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@suse.de> SUSE Labs, SUSE LINUX AG - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |