2021-10-19 08:06:43

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: [PATCH v3 18/23] fs: remove a comment pointing to the removed mandatory-locking file

The mandatory file locking got removed due to its problems, but
there's still a comment inside fs/locks.c pointing to the removed
doc.

Remove it.

Fixes: f7e33bdbd6d1 ("fs: remove mandatory file locking support")
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
---

To mailbombing on a large number of people, only mailing lists were C/C on the cover.
See [PATCH v3 00/23] at: https://lore.kernel.org/all/[email protected]/

fs/locks.c | 1 -
1 file changed, 1 deletion(-)

diff --git a/fs/locks.c b/fs/locks.c
index d397394633be..94feadcdab4e 100644
--- a/fs/locks.c
+++ b/fs/locks.c
@@ -61,7 +61,6 @@
*
* Initial implementation of mandatory locks. SunOS turned out to be
* a rotten model, so I implemented the "obvious" semantics.
- * See 'Documentation/filesystems/mandatory-locking.rst' for details.
* Andy Walker ([email protected]), April 06, 1996.
*
* Don't allow mandatory locks on mmap()'ed files. Added simple functions to
--
2.31.1


2021-10-19 10:53:57

by Jeff Layton

[permalink] [raw]
Subject: Re: [PATCH v3 18/23] fs: remove a comment pointing to the removed mandatory-locking file

On Tue, 2021-10-19 at 09:04 +0100, Mauro Carvalho Chehab wrote:
> The mandatory file locking got removed due to its problems, but
> there's still a comment inside fs/locks.c pointing to the removed
> doc.
>
> Remove it.
>
> Fixes: f7e33bdbd6d1 ("fs: remove mandatory file locking support")
> Signed-off-by: Mauro Carvalho Chehab <[email protected]>
> ---
>
> To mailbombing on a large number of people, only mailing lists were C/C on the cover.
> See [PATCH v3 00/23] at: https://lore.kernel.org/all/[email protected]/
>
> fs/locks.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/fs/locks.c b/fs/locks.c
> index d397394633be..94feadcdab4e 100644
> --- a/fs/locks.c
> +++ b/fs/locks.c
> @@ -61,7 +61,6 @@
> *
> * Initial implementation of mandatory locks. SunOS turned out to be
> * a rotten model, so I implemented the "obvious" semantics.
> - * See 'Documentation/filesystems/mandatory-locking.rst' for details.
> * Andy Walker ([email protected]), April 06, 1996.
> *
> * Don't allow mandatory locks on mmap()'ed files. Added simple functions to

Thanks Mauro. I'll pick this into my locks branch, so it should make
v5.16 as well.
--
Jeff Layton <[email protected]>

2021-10-19 14:17:56

by J. Bruce Fields

[permalink] [raw]
Subject: Re: [PATCH v3 18/23] fs: remove a comment pointing to the removed mandatory-locking file

On Tue, Oct 19, 2021 at 06:50:21AM -0400, Jeff Layton wrote:
> On Tue, 2021-10-19 at 09:04 +0100, Mauro Carvalho Chehab wrote:
> > The mandatory file locking got removed due to its problems, but
> > there's still a comment inside fs/locks.c pointing to the removed
> > doc.
> >
> > Remove it.
> >
> > Fixes: f7e33bdbd6d1 ("fs: remove mandatory file locking support")
> > Signed-off-by: Mauro Carvalho Chehab <[email protected]>
> > ---
> >
> > To mailbombing on a large number of people, only mailing lists were C/C on the cover.
> > See [PATCH v3 00/23] at: https://lore.kernel.org/all/[email protected]/
> >
> > fs/locks.c | 1 -
> > 1 file changed, 1 deletion(-)
> >
> > diff --git a/fs/locks.c b/fs/locks.c
> > index d397394633be..94feadcdab4e 100644
> > --- a/fs/locks.c
> > +++ b/fs/locks.c
> > @@ -61,7 +61,6 @@
> > *
> > * Initial implementation of mandatory locks. SunOS turned out to be
> > * a rotten model, so I implemented the "obvious" semantics.
> > - * See 'Documentation/filesystems/mandatory-locking.rst' for details.
> > * Andy Walker ([email protected]), April 06, 1996.
> > *
> > * Don't allow mandatory locks on mmap()'ed files. Added simple functions to
>
> Thanks Mauro. I'll pick this into my locks branch, so it should make
> v5.16 as well.

Could we delete the rest too?

We don't do those changelog-style comments any more; they're in the git
history if you need them. I can sort of get leaving some in out of
respect or if they've still provide some useful information. But
keeping comments referring to code that doesn't even exist any more just
seems confusing.

--b.

diff --git a/fs/locks.c b/fs/locks.c
index 3d6fb4ae847b..2540b7aedeac 100644
--- a/fs/locks.c
+++ b/fs/locks.c
@@ -59,17 +59,6 @@
* once we've checked for blocking and deadlocking.
* Andy Walker ([email protected]), April 03, 1996.
*
- * Initial implementation of mandatory locks. SunOS turned out to be
- * a rotten model, so I implemented the "obvious" semantics.
- * See 'Documentation/filesystems/mandatory-locking.rst' for details.
- * Andy Walker ([email protected]), April 06, 1996.
- *
- * Don't allow mandatory locks on mmap()'ed files. Added simple functions to
- * check if a file has mandatory locks, used by mmap(), open() and creat() to
- * see if system call should be rejected. Ref. HP-UX/SunOS/Solaris Reference
- * Manual, Section 2.
- * Andy Walker ([email protected]), April 09, 1996.
- *
* Tidied up block list handling. Added '/proc/locks' interface.
* Andy Walker ([email protected]), April 24, 1996.
*
@@ -95,10 +84,6 @@
* Made the block list a circular list to minimise searching in the list.
* Andy Walker ([email protected]), Sep 25, 1996.
*
- * Made mandatory locking a mount option. Default is not to allow mandatory
- * locking.
- * Andy Walker ([email protected]), Oct 04, 1996.
- *
* Some adaptations for NFS support.
* Olaf Kirch ([email protected]), Dec 1996,
*

2021-10-19 15:48:16

by Jeff Layton

[permalink] [raw]
Subject: Re: [PATCH v3 18/23] fs: remove a comment pointing to the removed mandatory-locking file

On Tue, 2021-10-19 at 10:14 -0400, J. Bruce Fields wrote:
> On Tue, Oct 19, 2021 at 06:50:21AM -0400, Jeff Layton wrote:
> > On Tue, 2021-10-19 at 09:04 +0100, Mauro Carvalho Chehab wrote:
> > > The mandatory file locking got removed due to its problems, but
> > > there's still a comment inside fs/locks.c pointing to the removed
> > > doc.
> > >
> > > Remove it.
> > >
> > > Fixes: f7e33bdbd6d1 ("fs: remove mandatory file locking support")
> > > Signed-off-by: Mauro Carvalho Chehab <[email protected]>
> > > ---
> > >
> > > To mailbombing on a large number of people, only mailing lists were C/C on the cover.
> > > See [PATCH v3 00/23] at: https://lore.kernel.org/all/[email protected]/
> > >
> > > fs/locks.c | 1 -
> > > 1 file changed, 1 deletion(-)
> > >
> > > diff --git a/fs/locks.c b/fs/locks.c
> > > index d397394633be..94feadcdab4e 100644
> > > --- a/fs/locks.c
> > > +++ b/fs/locks.c
> > > @@ -61,7 +61,6 @@
> > > *
> > > * Initial implementation of mandatory locks. SunOS turned out to be
> > > * a rotten model, so I implemented the "obvious" semantics.
> > > - * See 'Documentation/filesystems/mandatory-locking.rst' for details.
> > > * Andy Walker ([email protected]), April 06, 1996.
> > > *
> > > * Don't allow mandatory locks on mmap()'ed files. Added simple functions to
> >
> > Thanks Mauro. I'll pick this into my locks branch, so it should make
> > v5.16 as well.
>
> Could we delete the rest too?
>
> We don't do those changelog-style comments any more; they're in the git
> history if you need them. I can sort of get leaving some in out of
> respect or if they've still provide some useful information. But
> keeping comments referring to code that doesn't even exist any more just
> seems confusing.
>
> --b.
>
> diff --git a/fs/locks.c b/fs/locks.c
> index 3d6fb4ae847b..2540b7aedeac 100644
> --- a/fs/locks.c
> +++ b/fs/locks.c
> @@ -59,17 +59,6 @@
> * once we've checked for blocking and deadlocking.
> * Andy Walker ([email protected]), April 03, 1996.
> *
> - * Initial implementation of mandatory locks. SunOS turned out to be
> - * a rotten model, so I implemented the "obvious" semantics.
> - * See 'Documentation/filesystems/mandatory-locking.rst' for details.
> - * Andy Walker ([email protected]), April 06, 1996.
> - *
> - * Don't allow mandatory locks on mmap()'ed files. Added simple functions to
> - * check if a file has mandatory locks, used by mmap(), open() and creat() to
> - * see if system call should be rejected. Ref. HP-UX/SunOS/Solaris Reference
> - * Manual, Section 2.
> - * Andy Walker ([email protected]), April 09, 1996.
> - *
> * Tidied up block list handling. Added '/proc/locks' interface.
> * Andy Walker ([email protected]), April 24, 1996.
> *
> @@ -95,10 +84,6 @@
> * Made the block list a circular list to minimise searching in the list.
> * Andy Walker ([email protected]), Sep 25, 1996.
> *
> - * Made mandatory locking a mount option. Default is not to allow mandatory
> - * locking.
> - * Andy Walker ([email protected]), Oct 04, 1996.
> - *
> * Some adaptations for NFS support.
> * Olaf Kirch ([email protected]), Dec 1996,
> *

IDK...Do we want to "erase history" selectively like that?

Maybe we should just get rid of the whole pile of "changelog" comments
in fs/locks.c? They aren't terribly useful these days anyhow.

--
Jeff Layton <[email protected]>

2021-10-19 16:19:47

by J. Bruce Fields

[permalink] [raw]
Subject: Re: [PATCH v3 18/23] fs: remove a comment pointing to the removed mandatory-locking file

On Tue, Oct 19, 2021 at 11:46:51AM -0400, Jeff Layton wrote:
> IDK...Do we want to "erase history" selectively like that?

Seems like pretty spotty history anyway, so I don't think it's a
problem, but...

> Maybe we should just get rid of the whole pile of "changelog" comments
> in fs/locks.c? They aren't terribly useful these days anyhow.

... that'd be fine with me.

I didn't mainly because I thought it'd be good to read through it and
see if there's anything that should be salvaged.

Reading through it now:

The last few paragraphs (under "Locking conflicts and dependencies" were
added more recently by Neil and are still useful.

I'd be OK losing the rest.

It might still be good to have some basic introduction; maybe something
like this?:

--b.

diff --git a/fs/locks.c b/fs/locks.c
index 3d6fb4ae847b..b54813eae44f 100644
--- a/fs/locks.c
+++ b/fs/locks.c
@@ -2,117 +2,11 @@
/*
* linux/fs/locks.c
*
- * Provide support for fcntl()'s F_GETLK, F_SETLK, and F_SETLKW calls.
- * Doug Evans ([email protected]), August 07, 1992
+ * We implement four types of file locks: BSD locks, posix locks, open
+ * file description locks, and leases. For details about BSD locks,
+ * see the flock(2) man page; for details about the other three, see
+ * fcntl(2).
*
- * Deadlock detection added.
- * FIXME: one thing isn't handled yet:
- * - mandatory locks (requires lots of changes elsewhere)
- * Kelly Carmichael (kelly@[142.24.8.65]), September 17, 1994.
- *
- * Miscellaneous edits, and a total rewrite of posix_lock_file() code.
- * Kai Petzke ([email protected]), 1994
- *
- * Converted file_lock_table to a linked list from an array, which eliminates
- * the limits on how many active file locks are open.
- * Chad Page ([email protected]), November 27, 1994
- *
- * Removed dependency on file descriptors. dup()'ed file descriptors now
- * get the same locks as the original file descriptors, and a close() on
- * any file descriptor removes ALL the locks on the file for the current
- * process. Since locks still depend on the process id, locks are inherited
- * after an exec() but not after a fork(). This agrees with POSIX, and both
- * BSD and SVR4 practice.
- * Andy Walker ([email protected]), February 14, 1995
- *
- * Scrapped free list which is redundant now that we allocate locks
- * dynamically with kmalloc()/kfree().
- * Andy Walker ([email protected]), February 21, 1995
- *
- * Implemented two lock personalities - FL_FLOCK and FL_POSIX.
- *
- * FL_POSIX locks are created with calls to fcntl() and lockf() through the
- * fcntl() system call. They have the semantics described above.
- *
- * FL_FLOCK locks are created with calls to flock(), through the flock()
- * system call, which is new. Old C libraries implement flock() via fcntl()
- * and will continue to use the old, broken implementation.
- *
- * FL_FLOCK locks follow the 4.4 BSD flock() semantics. They are associated
- * with a file pointer (filp). As a result they can be shared by a parent
- * process and its children after a fork(). They are removed when the last
- * file descriptor referring to the file pointer is closed (unless explicitly
- * unlocked).
- *
- * FL_FLOCK locks never deadlock, an existing lock is always removed before
- * upgrading from shared to exclusive (or vice versa). When this happens
- * any processes blocked by the current lock are woken up and allowed to
- * run before the new lock is applied.
- * Andy Walker ([email protected]), June 09, 1995
- *
- * Removed some race conditions in flock_lock_file(), marked other possible
- * races. Just grep for FIXME to see them.
- * Dmitry Gorodchanin ([email protected]), February 09, 1996.
- *
- * Addressed Dmitry's concerns. Deadlock checking no longer recursive.
- * Lock allocation changed to GFP_ATOMIC as we can't afford to sleep
- * once we've checked for blocking and deadlocking.
- * Andy Walker ([email protected]), April 03, 1996.
- *
- * Initial implementation of mandatory locks. SunOS turned out to be
- * a rotten model, so I implemented the "obvious" semantics.
- * See 'Documentation/filesystems/mandatory-locking.rst' for details.
- * Andy Walker ([email protected]), April 06, 1996.
- *
- * Don't allow mandatory locks on mmap()'ed files. Added simple functions to
- * check if a file has mandatory locks, used by mmap(), open() and creat() to
- * see if system call should be rejected. Ref. HP-UX/SunOS/Solaris Reference
- * Manual, Section 2.
- * Andy Walker ([email protected]), April 09, 1996.
- *
- * Tidied up block list handling. Added '/proc/locks' interface.
- * Andy Walker ([email protected]), April 24, 1996.
- *
- * Fixed deadlock condition for pathological code that mixes calls to
- * flock() and fcntl().
- * Andy Walker ([email protected]), April 29, 1996.
- *
- * Allow only one type of locking scheme (FL_POSIX or FL_FLOCK) to be in use
- * for a given file at a time. Changed the CONFIG_LOCK_MANDATORY scheme to
- * guarantee sensible behaviour in the case where file system modules might
- * be compiled with different options than the kernel itself.
- * Andy Walker ([email protected]), May 15, 1996.
- *
- * Added a couple of missing wake_up() calls. Thanks to Thomas Meckel
- * ([email protected]) for spotting this.
- * Andy Walker ([email protected]), May 15, 1996.
- *
- * Changed FL_POSIX locks to use the block list in the same way as FL_FLOCK
- * locks. Changed process synchronisation to avoid dereferencing locks that
- * have already been freed.
- * Andy Walker ([email protected]), Sep 21, 1996.
- *
- * Made the block list a circular list to minimise searching in the list.
- * Andy Walker ([email protected]), Sep 25, 1996.
- *
- * Made mandatory locking a mount option. Default is not to allow mandatory
- * locking.
- * Andy Walker ([email protected]), Oct 04, 1996.
- *
- * Some adaptations for NFS support.
- * Olaf Kirch ([email protected]), Dec 1996,
- *
- * Fixed /proc/locks interface so that we can't overrun the buffer we are handed.
- * Andy Walker ([email protected]), May 12, 1997.
- *
- * Use slab allocator instead of kmalloc/kfree.
- * Use generic list implementation from <linux/list.h>.
- * Sped up posix_locks_deadlock by only considering blocked locks.
- * Matthew Wilcox <[email protected]>, March, 2000.
- *
- * Leases and LOCK_MAND
- * Matthew Wilcox <[email protected]>, June, 2000.
- * Stephen Rothwell <[email protected]>, June, 2000.
*
* Locking conflicts and dependencies:
* If multiple threads attempt to lock the same byte (or flock the same file)

2021-10-19 16:30:51

by Jeff Layton

[permalink] [raw]
Subject: Re: [PATCH v3 18/23] fs: remove a comment pointing to the removed mandatory-locking file

On Tue, 2021-10-19 at 12:16 -0400, J. Bruce Fields wrote:
> On Tue, Oct 19, 2021 at 11:46:51AM -0400, Jeff Layton wrote:
> > IDK...Do we want to "erase history" selectively like that?
>
> Seems like pretty spotty history anyway, so I don't think it's a
> problem, but...
>
> > Maybe we should just get rid of the whole pile of "changelog" comments
> > in fs/locks.c? They aren't terribly useful these days anyhow.
>
> ... that'd be fine with me.
>
> I didn't mainly because I thought it'd be good to read through it and
> see if there's anything that should be salvaged.
>
> Reading through it now:
>
> The last few paragraphs (under "Locking conflicts and dependencies" were
> added more recently by Neil and are still useful.
>
> I'd be OK losing the rest.
>
> It might still be good to have some basic introduction; maybe something
> like this?:
>
> --b.
>
> diff --git a/fs/locks.c b/fs/locks.c
> index 3d6fb4ae847b..b54813eae44f 100644
> --- a/fs/locks.c
> +++ b/fs/locks.c
> @@ -2,117 +2,11 @@
> /*
> * linux/fs/locks.c
> *
> - * Provide support for fcntl()'s F_GETLK, F_SETLK, and F_SETLKW calls.
> - * Doug Evans ([email protected]), August 07, 1992
> + * We implement four types of file locks: BSD locks, posix locks, open
> + * file description locks, and leases. For details about BSD locks,
> + * see the flock(2) man page; for details about the other three, see
> + * fcntl(2).
> *
> - * Deadlock detection added.
> - * FIXME: one thing isn't handled yet:
> - * - mandatory locks (requires lots of changes elsewhere)
> - * Kelly Carmichael (kelly@[142.24.8.65]), September 17, 1994.
> - *
> - * Miscellaneous edits, and a total rewrite of posix_lock_file() code.
> - * Kai Petzke ([email protected]), 1994
> - *
> - * Converted file_lock_table to a linked list from an array, which eliminates
> - * the limits on how many active file locks are open.
> - * Chad Page ([email protected]), November 27, 1994
> - *
> - * Removed dependency on file descriptors. dup()'ed file descriptors now
> - * get the same locks as the original file descriptors, and a close() on
> - * any file descriptor removes ALL the locks on the file for the current
> - * process. Since locks still depend on the process id, locks are inherited
> - * after an exec() but not after a fork(). This agrees with POSIX, and both
> - * BSD and SVR4 practice.
> - * Andy Walker ([email protected]), February 14, 1995
> - *
> - * Scrapped free list which is redundant now that we allocate locks
> - * dynamically with kmalloc()/kfree().
> - * Andy Walker ([email protected]), February 21, 1995
> - *
> - * Implemented two lock personalities - FL_FLOCK and FL_POSIX.
> - *
> - * FL_POSIX locks are created with calls to fcntl() and lockf() through the
> - * fcntl() system call. They have the semantics described above.
> - *
> - * FL_FLOCK locks are created with calls to flock(), through the flock()
> - * system call, which is new. Old C libraries implement flock() via fcntl()
> - * and will continue to use the old, broken implementation.
> - *
> - * FL_FLOCK locks follow the 4.4 BSD flock() semantics. They are associated
> - * with a file pointer (filp). As a result they can be shared by a parent
> - * process and its children after a fork(). They are removed when the last
> - * file descriptor referring to the file pointer is closed (unless explicitly
> - * unlocked).
> - *
> - * FL_FLOCK locks never deadlock, an existing lock is always removed before
> - * upgrading from shared to exclusive (or vice versa). When this happens
> - * any processes blocked by the current lock are woken up and allowed to
> - * run before the new lock is applied.
> - * Andy Walker ([email protected]), June 09, 1995
> - *
> - * Removed some race conditions in flock_lock_file(), marked other possible
> - * races. Just grep for FIXME to see them.
> - * Dmitry Gorodchanin ([email protected]), February 09, 1996.
> - *
> - * Addressed Dmitry's concerns. Deadlock checking no longer recursive.
> - * Lock allocation changed to GFP_ATOMIC as we can't afford to sleep
> - * once we've checked for blocking and deadlocking.
> - * Andy Walker ([email protected]), April 03, 1996.
> - *
> - * Initial implementation of mandatory locks. SunOS turned out to be
> - * a rotten model, so I implemented the "obvious" semantics.
> - * See 'Documentation/filesystems/mandatory-locking.rst' for details.
> - * Andy Walker ([email protected]), April 06, 1996.
> - *
> - * Don't allow mandatory locks on mmap()'ed files. Added simple functions to
> - * check if a file has mandatory locks, used by mmap(), open() and creat() to
> - * see if system call should be rejected. Ref. HP-UX/SunOS/Solaris Reference
> - * Manual, Section 2.
> - * Andy Walker ([email protected]), April 09, 1996.
> - *
> - * Tidied up block list handling. Added '/proc/locks' interface.
> - * Andy Walker ([email protected]), April 24, 1996.
> - *
> - * Fixed deadlock condition for pathological code that mixes calls to
> - * flock() and fcntl().
> - * Andy Walker ([email protected]), April 29, 1996.
> - *
> - * Allow only one type of locking scheme (FL_POSIX or FL_FLOCK) to be in use
> - * for a given file at a time. Changed the CONFIG_LOCK_MANDATORY scheme to
> - * guarantee sensible behaviour in the case where file system modules might
> - * be compiled with different options than the kernel itself.
> - * Andy Walker ([email protected]), May 15, 1996.
> - *
> - * Added a couple of missing wake_up() calls. Thanks to Thomas Meckel
> - * ([email protected]) for spotting this.
> - * Andy Walker ([email protected]), May 15, 1996.
> - *
> - * Changed FL_POSIX locks to use the block list in the same way as FL_FLOCK
> - * locks. Changed process synchronisation to avoid dereferencing locks that
> - * have already been freed.
> - * Andy Walker ([email protected]), Sep 21, 1996.
> - *
> - * Made the block list a circular list to minimise searching in the list.
> - * Andy Walker ([email protected]), Sep 25, 1996.
> - *
> - * Made mandatory locking a mount option. Default is not to allow mandatory
> - * locking.
> - * Andy Walker ([email protected]), Oct 04, 1996.
> - *
> - * Some adaptations for NFS support.
> - * Olaf Kirch ([email protected]), Dec 1996,
> - *
> - * Fixed /proc/locks interface so that we can't overrun the buffer we are handed.
> - * Andy Walker ([email protected]), May 12, 1997.
> - *
> - * Use slab allocator instead of kmalloc/kfree.
> - * Use generic list implementation from <linux/list.h>.
> - * Sped up posix_locks_deadlock by only considering blocked locks.
> - * Matthew Wilcox <[email protected]>, March, 2000.
> - *
> - * Leases and LOCK_MAND
> - * Matthew Wilcox <[email protected]>, June, 2000.
> - * Stephen Rothwell <[email protected]>, June, 2000.
> *
> * Locking conflicts and dependencies:
> * If multiple threads attempt to lock the same byte (or flock the same file)

Yeah, I think that looks great. Send it with a changelog and I'll pull
it into the branch I have feeding into -next.

Thanks,
--
Jeff Layton <[email protected]>

2021-10-19 17:40:53

by J. Bruce Fields

[permalink] [raw]
Subject: [PATCH] locks: remove changelog comments

From: "J. Bruce Fields" <[email protected]>

This is only of historical interest, and anyone interested in the
history can dig out an old version of locks.c from from git.

Triggered by the observation that it references the now-removed
Documentation/filesystems/mandatory-locking.rst.

Reported-by: Mauro Carvalho Chehab <[email protected]>
Signed-off-by: J. Bruce Fields <[email protected]>
---
fs/locks.c | 114 ++---------------------------------------------------
1 file changed, 4 insertions(+), 110 deletions(-)

On Tue, Oct 19, 2021 at 12:27:55PM -0400, Jeff Layton wrote:
> Yeah, I think that looks great. Send it with a changelog and I'll pull
> it into the branch I have feeding into -next.

OK!--b.

diff --git a/fs/locks.c b/fs/locks.c
index 3d6fb4ae847b..b54813eae44f 100644
--- a/fs/locks.c
+++ b/fs/locks.c
@@ -2,117 +2,11 @@
/*
* linux/fs/locks.c
*
- * Provide support for fcntl()'s F_GETLK, F_SETLK, and F_SETLKW calls.
- * Doug Evans ([email protected]), August 07, 1992
+ * We implement four types of file locks: BSD locks, posix locks, open
+ * file description locks, and leases. For details about BSD locks,
+ * see the flock(2) man page; for details about the other three, see
+ * fcntl(2).
*
- * Deadlock detection added.
- * FIXME: one thing isn't handled yet:
- * - mandatory locks (requires lots of changes elsewhere)
- * Kelly Carmichael (kelly@[142.24.8.65]), September 17, 1994.
- *
- * Miscellaneous edits, and a total rewrite of posix_lock_file() code.
- * Kai Petzke ([email protected]), 1994
- *
- * Converted file_lock_table to a linked list from an array, which eliminates
- * the limits on how many active file locks are open.
- * Chad Page ([email protected]), November 27, 1994
- *
- * Removed dependency on file descriptors. dup()'ed file descriptors now
- * get the same locks as the original file descriptors, and a close() on
- * any file descriptor removes ALL the locks on the file for the current
- * process. Since locks still depend on the process id, locks are inherited
- * after an exec() but not after a fork(). This agrees with POSIX, and both
- * BSD and SVR4 practice.
- * Andy Walker ([email protected]), February 14, 1995
- *
- * Scrapped free list which is redundant now that we allocate locks
- * dynamically with kmalloc()/kfree().
- * Andy Walker ([email protected]), February 21, 1995
- *
- * Implemented two lock personalities - FL_FLOCK and FL_POSIX.
- *
- * FL_POSIX locks are created with calls to fcntl() and lockf() through the
- * fcntl() system call. They have the semantics described above.
- *
- * FL_FLOCK locks are created with calls to flock(), through the flock()
- * system call, which is new. Old C libraries implement flock() via fcntl()
- * and will continue to use the old, broken implementation.
- *
- * FL_FLOCK locks follow the 4.4 BSD flock() semantics. They are associated
- * with a file pointer (filp). As a result they can be shared by a parent
- * process and its children after a fork(). They are removed when the last
- * file descriptor referring to the file pointer is closed (unless explicitly
- * unlocked).
- *
- * FL_FLOCK locks never deadlock, an existing lock is always removed before
- * upgrading from shared to exclusive (or vice versa). When this happens
- * any processes blocked by the current lock are woken up and allowed to
- * run before the new lock is applied.
- * Andy Walker ([email protected]), June 09, 1995
- *
- * Removed some race conditions in flock_lock_file(), marked other possible
- * races. Just grep for FIXME to see them.
- * Dmitry Gorodchanin ([email protected]), February 09, 1996.
- *
- * Addressed Dmitry's concerns. Deadlock checking no longer recursive.
- * Lock allocation changed to GFP_ATOMIC as we can't afford to sleep
- * once we've checked for blocking and deadlocking.
- * Andy Walker ([email protected]), April 03, 1996.
- *
- * Initial implementation of mandatory locks. SunOS turned out to be
- * a rotten model, so I implemented the "obvious" semantics.
- * See 'Documentation/filesystems/mandatory-locking.rst' for details.
- * Andy Walker ([email protected]), April 06, 1996.
- *
- * Don't allow mandatory locks on mmap()'ed files. Added simple functions to
- * check if a file has mandatory locks, used by mmap(), open() and creat() to
- * see if system call should be rejected. Ref. HP-UX/SunOS/Solaris Reference
- * Manual, Section 2.
- * Andy Walker ([email protected]), April 09, 1996.
- *
- * Tidied up block list handling. Added '/proc/locks' interface.
- * Andy Walker ([email protected]), April 24, 1996.
- *
- * Fixed deadlock condition for pathological code that mixes calls to
- * flock() and fcntl().
- * Andy Walker ([email protected]), April 29, 1996.
- *
- * Allow only one type of locking scheme (FL_POSIX or FL_FLOCK) to be in use
- * for a given file at a time. Changed the CONFIG_LOCK_MANDATORY scheme to
- * guarantee sensible behaviour in the case where file system modules might
- * be compiled with different options than the kernel itself.
- * Andy Walker ([email protected]), May 15, 1996.
- *
- * Added a couple of missing wake_up() calls. Thanks to Thomas Meckel
- * ([email protected]) for spotting this.
- * Andy Walker ([email protected]), May 15, 1996.
- *
- * Changed FL_POSIX locks to use the block list in the same way as FL_FLOCK
- * locks. Changed process synchronisation to avoid dereferencing locks that
- * have already been freed.
- * Andy Walker ([email protected]), Sep 21, 1996.
- *
- * Made the block list a circular list to minimise searching in the list.
- * Andy Walker ([email protected]), Sep 25, 1996.
- *
- * Made mandatory locking a mount option. Default is not to allow mandatory
- * locking.
- * Andy Walker ([email protected]), Oct 04, 1996.
- *
- * Some adaptations for NFS support.
- * Olaf Kirch ([email protected]), Dec 1996,
- *
- * Fixed /proc/locks interface so that we can't overrun the buffer we are handed.
- * Andy Walker ([email protected]), May 12, 1997.
- *
- * Use slab allocator instead of kmalloc/kfree.
- * Use generic list implementation from <linux/list.h>.
- * Sped up posix_locks_deadlock by only considering blocked locks.
- * Matthew Wilcox <[email protected]>, March, 2000.
- *
- * Leases and LOCK_MAND
- * Matthew Wilcox <[email protected]>, June, 2000.
- * Stephen Rothwell <[email protected]>, June, 2000.
*
* Locking conflicts and dependencies:
* If multiple threads attempt to lock the same byte (or flock the same file)
--
2.31.1

2021-10-19 18:15:24

by Jeff Layton

[permalink] [raw]
Subject: Re: [PATCH] locks: remove changelog comments

On Tue, 2021-10-19 at 13:38 -0400, J. Bruce Fields wrote:
> From: "J. Bruce Fields" <[email protected]>
>
> This is only of historical interest, and anyone interested in the
> history can dig out an old version of locks.c from from git.
>
> Triggered by the observation that it references the now-removed
> Documentation/filesystems/mandatory-locking.rst.
>
> Reported-by: Mauro Carvalho Chehab <[email protected]>
> Signed-off-by: J. Bruce Fields <[email protected]>
> ---
> fs/locks.c | 114 ++---------------------------------------------------
> 1 file changed, 4 insertions(+), 110 deletions(-)
>
> On Tue, Oct 19, 2021 at 12:27:55PM -0400, Jeff Layton wrote:
> > Yeah, I think that looks great. Send it with a changelog and I'll pull
> > it into the branch I have feeding into -next.
>
> OK!--b.
>
> diff --git a/fs/locks.c b/fs/locks.c
> index 3d6fb4ae847b..b54813eae44f 100644
> --- a/fs/locks.c
> +++ b/fs/locks.c
> @@ -2,117 +2,11 @@
> /*
> * linux/fs/locks.c
> *
> - * Provide support for fcntl()'s F_GETLK, F_SETLK, and F_SETLKW calls.
> - * Doug Evans ([email protected]), August 07, 1992
> + * We implement four types of file locks: BSD locks, posix locks, open
> + * file description locks, and leases. For details about BSD locks,
> + * see the flock(2) man page; for details about the other three, see
> + * fcntl(2).
> *
> - * Deadlock detection added.
> - * FIXME: one thing isn't handled yet:
> - * - mandatory locks (requires lots of changes elsewhere)
> - * Kelly Carmichael (kelly@[142.24.8.65]), September 17, 1994.
> - *
> - * Miscellaneous edits, and a total rewrite of posix_lock_file() code.
> - * Kai Petzke ([email protected]), 1994
> - *
> - * Converted file_lock_table to a linked list from an array, which eliminates
> - * the limits on how many active file locks are open.
> - * Chad Page ([email protected]), November 27, 1994
> - *
> - * Removed dependency on file descriptors. dup()'ed file descriptors now
> - * get the same locks as the original file descriptors, and a close() on
> - * any file descriptor removes ALL the locks on the file for the current
> - * process. Since locks still depend on the process id, locks are inherited
> - * after an exec() but not after a fork(). This agrees with POSIX, and both
> - * BSD and SVR4 practice.
> - * Andy Walker ([email protected]), February 14, 1995
> - *
> - * Scrapped free list which is redundant now that we allocate locks
> - * dynamically with kmalloc()/kfree().
> - * Andy Walker ([email protected]), February 21, 1995
> - *
> - * Implemented two lock personalities - FL_FLOCK and FL_POSIX.
> - *
> - * FL_POSIX locks are created with calls to fcntl() and lockf() through the
> - * fcntl() system call. They have the semantics described above.
> - *
> - * FL_FLOCK locks are created with calls to flock(), through the flock()
> - * system call, which is new. Old C libraries implement flock() via fcntl()
> - * and will continue to use the old, broken implementation.
> - *
> - * FL_FLOCK locks follow the 4.4 BSD flock() semantics. They are associated
> - * with a file pointer (filp). As a result they can be shared by a parent
> - * process and its children after a fork(). They are removed when the last
> - * file descriptor referring to the file pointer is closed (unless explicitly
> - * unlocked).
> - *
> - * FL_FLOCK locks never deadlock, an existing lock is always removed before
> - * upgrading from shared to exclusive (or vice versa). When this happens
> - * any processes blocked by the current lock are woken up and allowed to
> - * run before the new lock is applied.
> - * Andy Walker ([email protected]), June 09, 1995
> - *
> - * Removed some race conditions in flock_lock_file(), marked other possible
> - * races. Just grep for FIXME to see them.
> - * Dmitry Gorodchanin ([email protected]), February 09, 1996.
> - *
> - * Addressed Dmitry's concerns. Deadlock checking no longer recursive.
> - * Lock allocation changed to GFP_ATOMIC as we can't afford to sleep
> - * once we've checked for blocking and deadlocking.
> - * Andy Walker ([email protected]), April 03, 1996.
> - *
> - * Initial implementation of mandatory locks. SunOS turned out to be
> - * a rotten model, so I implemented the "obvious" semantics.
> - * See 'Documentation/filesystems/mandatory-locking.rst' for details.
> - * Andy Walker ([email protected]), April 06, 1996.
> - *
> - * Don't allow mandatory locks on mmap()'ed files. Added simple functions to
> - * check if a file has mandatory locks, used by mmap(), open() and creat() to
> - * see if system call should be rejected. Ref. HP-UX/SunOS/Solaris Reference
> - * Manual, Section 2.
> - * Andy Walker ([email protected]), April 09, 1996.
> - *
> - * Tidied up block list handling. Added '/proc/locks' interface.
> - * Andy Walker ([email protected]), April 24, 1996.
> - *
> - * Fixed deadlock condition for pathological code that mixes calls to
> - * flock() and fcntl().
> - * Andy Walker ([email protected]), April 29, 1996.
> - *
> - * Allow only one type of locking scheme (FL_POSIX or FL_FLOCK) to be in use
> - * for a given file at a time. Changed the CONFIG_LOCK_MANDATORY scheme to
> - * guarantee sensible behaviour in the case where file system modules might
> - * be compiled with different options than the kernel itself.
> - * Andy Walker ([email protected]), May 15, 1996.
> - *
> - * Added a couple of missing wake_up() calls. Thanks to Thomas Meckel
> - * ([email protected]) for spotting this.
> - * Andy Walker ([email protected]), May 15, 1996.
> - *
> - * Changed FL_POSIX locks to use the block list in the same way as FL_FLOCK
> - * locks. Changed process synchronisation to avoid dereferencing locks that
> - * have already been freed.
> - * Andy Walker ([email protected]), Sep 21, 1996.
> - *
> - * Made the block list a circular list to minimise searching in the list.
> - * Andy Walker ([email protected]), Sep 25, 1996.
> - *
> - * Made mandatory locking a mount option. Default is not to allow mandatory
> - * locking.
> - * Andy Walker ([email protected]), Oct 04, 1996.
> - *
> - * Some adaptations for NFS support.
> - * Olaf Kirch ([email protected]), Dec 1996,
> - *
> - * Fixed /proc/locks interface so that we can't overrun the buffer we are handed.
> - * Andy Walker ([email protected]), May 12, 1997.
> - *
> - * Use slab allocator instead of kmalloc/kfree.
> - * Use generic list implementation from <linux/list.h>.
> - * Sped up posix_locks_deadlock by only considering blocked locks.
> - * Matthew Wilcox <[email protected]>, March, 2000.
> - *
> - * Leases and LOCK_MAND
> - * Matthew Wilcox <[email protected]>, June, 2000.
> - * Stephen Rothwell <[email protected]>, June, 2000.
> *
> * Locking conflicts and dependencies:
> * If multiple threads attempt to lock the same byte (or flock the same file)

Thanks, Bruce (and Mauro). Applied to the locks-next branch (and I
dropped Mauro's patch that touched the same area). It should make v5.16.

Cheers,
--
Jeff Layton <[email protected]>

2021-10-20 05:52:15

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: Re: [PATCH] locks: remove changelog comments

Em Tue, 19 Oct 2021 14:14:08 -0400
Jeff Layton <[email protected]> escreveu:

> On Tue, 2021-10-19 at 13:38 -0400, J. Bruce Fields wrote:
> > From: "J. Bruce Fields" <[email protected]>
> >
> > This is only of historical interest, and anyone interested in the
> > history can dig out an old version of locks.c from from git.
> >
> > Triggered by the observation that it references the now-removed
> > Documentation/filesystems/mandatory-locking.rst.
> >
> > Reported-by: Mauro Carvalho Chehab <[email protected]>
> > Signed-off-by: J. Bruce Fields <[email protected]>
> > ---
> > fs/locks.c | 114 ++---------------------------------------------------
> > 1 file changed, 4 insertions(+), 110 deletions(-)
> >
> > On Tue, Oct 19, 2021 at 12:27:55PM -0400, Jeff Layton wrote:
> > > Yeah, I think that looks great. Send it with a changelog and I'll pull
> > > it into the branch I have feeding into -next.
> >
> > OK!--b.
> >
> > diff --git a/fs/locks.c b/fs/locks.c
> > index 3d6fb4ae847b..b54813eae44f 100644
> > --- a/fs/locks.c
> > +++ b/fs/locks.c
> > @@ -2,117 +2,11 @@
> > /*
> > * linux/fs/locks.c
> > *
> > - * Provide support for fcntl()'s F_GETLK, F_SETLK, and F_SETLKW calls.
> > - * Doug Evans ([email protected]), August 07, 1992
> > + * We implement four types of file locks: BSD locks, posix locks, open
> > + * file description locks, and leases. For details about BSD locks,
> > + * see the flock(2) man page; for details about the other three, see
> > + * fcntl(2).
> > *
> > - * Deadlock detection added.
> > - * FIXME: one thing isn't handled yet:
> > - * - mandatory locks (requires lots of changes elsewhere)
> > - * Kelly Carmichael (kelly@[142.24.8.65]), September 17, 1994.
> > - *
> > - * Miscellaneous edits, and a total rewrite of posix_lock_file() code.
> > - * Kai Petzke ([email protected]), 1994
> > - *
> > - * Converted file_lock_table to a linked list from an array, which eliminates
> > - * the limits on how many active file locks are open.
> > - * Chad Page ([email protected]), November 27, 1994
> > - *
> > - * Removed dependency on file descriptors. dup()'ed file descriptors now
> > - * get the same locks as the original file descriptors, and a close() on
> > - * any file descriptor removes ALL the locks on the file for the current
> > - * process. Since locks still depend on the process id, locks are inherited
> > - * after an exec() but not after a fork(). This agrees with POSIX, and both
> > - * BSD and SVR4 practice.
> > - * Andy Walker ([email protected]), February 14, 1995
> > - *
> > - * Scrapped free list which is redundant now that we allocate locks
> > - * dynamically with kmalloc()/kfree().
> > - * Andy Walker ([email protected]), February 21, 1995
> > - *
> > - * Implemented two lock personalities - FL_FLOCK and FL_POSIX.
> > - *
> > - * FL_POSIX locks are created with calls to fcntl() and lockf() through the
> > - * fcntl() system call. They have the semantics described above.
> > - *
> > - * FL_FLOCK locks are created with calls to flock(), through the flock()
> > - * system call, which is new. Old C libraries implement flock() via fcntl()
> > - * and will continue to use the old, broken implementation.
> > - *
> > - * FL_FLOCK locks follow the 4.4 BSD flock() semantics. They are associated
> > - * with a file pointer (filp). As a result they can be shared by a parent
> > - * process and its children after a fork(). They are removed when the last
> > - * file descriptor referring to the file pointer is closed (unless explicitly
> > - * unlocked).
> > - *
> > - * FL_FLOCK locks never deadlock, an existing lock is always removed before
> > - * upgrading from shared to exclusive (or vice versa). When this happens
> > - * any processes blocked by the current lock are woken up and allowed to
> > - * run before the new lock is applied.
> > - * Andy Walker ([email protected]), June 09, 1995
> > - *
> > - * Removed some race conditions in flock_lock_file(), marked other possible
> > - * races. Just grep for FIXME to see them.
> > - * Dmitry Gorodchanin ([email protected]), February 09, 1996.
> > - *
> > - * Addressed Dmitry's concerns. Deadlock checking no longer recursive.
> > - * Lock allocation changed to GFP_ATOMIC as we can't afford to sleep
> > - * once we've checked for blocking and deadlocking.
> > - * Andy Walker ([email protected]), April 03, 1996.
> > - *
> > - * Initial implementation of mandatory locks. SunOS turned out to be
> > - * a rotten model, so I implemented the "obvious" semantics.
> > - * See 'Documentation/filesystems/mandatory-locking.rst' for details.
> > - * Andy Walker ([email protected]), April 06, 1996.
> > - *
> > - * Don't allow mandatory locks on mmap()'ed files. Added simple functions to
> > - * check if a file has mandatory locks, used by mmap(), open() and creat() to
> > - * see if system call should be rejected. Ref. HP-UX/SunOS/Solaris Reference
> > - * Manual, Section 2.
> > - * Andy Walker ([email protected]), April 09, 1996.
> > - *
> > - * Tidied up block list handling. Added '/proc/locks' interface.
> > - * Andy Walker ([email protected]), April 24, 1996.
> > - *
> > - * Fixed deadlock condition for pathological code that mixes calls to
> > - * flock() and fcntl().
> > - * Andy Walker ([email protected]), April 29, 1996.
> > - *
> > - * Allow only one type of locking scheme (FL_POSIX or FL_FLOCK) to be in use
> > - * for a given file at a time. Changed the CONFIG_LOCK_MANDATORY scheme to
> > - * guarantee sensible behaviour in the case where file system modules might
> > - * be compiled with different options than the kernel itself.
> > - * Andy Walker ([email protected]), May 15, 1996.
> > - *
> > - * Added a couple of missing wake_up() calls. Thanks to Thomas Meckel
> > - * ([email protected]) for spotting this.
> > - * Andy Walker ([email protected]), May 15, 1996.
> > - *
> > - * Changed FL_POSIX locks to use the block list in the same way as FL_FLOCK
> > - * locks. Changed process synchronisation to avoid dereferencing locks that
> > - * have already been freed.
> > - * Andy Walker ([email protected]), Sep 21, 1996.
> > - *
> > - * Made the block list a circular list to minimise searching in the list.
> > - * Andy Walker ([email protected]), Sep 25, 1996.
> > - *
> > - * Made mandatory locking a mount option. Default is not to allow mandatory
> > - * locking.
> > - * Andy Walker ([email protected]), Oct 04, 1996.
> > - *
> > - * Some adaptations for NFS support.
> > - * Olaf Kirch ([email protected]), Dec 1996,
> > - *
> > - * Fixed /proc/locks interface so that we can't overrun the buffer we are handed.
> > - * Andy Walker ([email protected]), May 12, 1997.
> > - *
> > - * Use slab allocator instead of kmalloc/kfree.
> > - * Use generic list implementation from <linux/list.h>.
> > - * Sped up posix_locks_deadlock by only considering blocked locks.
> > - * Matthew Wilcox <[email protected]>, March, 2000.
> > - *
> > - * Leases and LOCK_MAND
> > - * Matthew Wilcox <[email protected]>, June, 2000.
> > - * Stephen Rothwell <[email protected]>, June, 2000.
> > *
> > * Locking conflicts and dependencies:
> > * If multiple threads attempt to lock the same byte (or flock the same file)
>
> Thanks, Bruce (and Mauro). Applied to the locks-next branch (and I
> dropped Mauro's patch that touched the same area). It should make v5.16.

Thanks! Yeah, it looks a lot cleaner without those changelog-style
comments.

>
> Cheers,