From: ebiederm@xmission.com (Eric W. Biederman) To: Al Viro <viro@ZenIV.linux.org.uk> Cc: <linux-kernel@vger.kernel.org>, <linux-pci@vger.kernel.org>, <linux-mm@kvack.org>, <linux-fsdevel@vger.kernel.org>, Hugh Dickins <hugh@veritas.com>, Tejun Heo <tj@kernel.org>, Alexey Dobriyan <adobriyan@gmail.com>, Linus Torvalds <torvalds@linux-foundation.org>, Alan Cox <alan@lxorguk.ukuu.org.uk>, Greg Kroah-Hartman <gregkh@suse.de>, Nick Piggin <npiggin@suse.de>, Andrew Morton <akpm@linux-foundation.org>, Christoph Hellwig <hch@infradead.org> Subject: [PATCH 0/23] File descriptor hot-unplug support v2 Date: Mon, 01 Jun 2009 14:45:17 -0700 [thread overview] Message-ID: <m1oct739xu.fsf@fess.ebiederm.org> (raw) In-Reply-To: <m1skkf761y.fsf@fess.ebiederm.org> (Eric W. Biederman's message of "Sat\, 11 Apr 2009 05\:01\:29 -0700") I found myself looking at the uio, seeing that it does not support pci hot-unplug, and thinking "Great yet another implementation of hotunplug logic that needs to be added". I decided to see what it would take to add a generic implementation of the code we have for supporting hot unplugging devices in sysfs, proc, sysctl, tty_io, and now almost in the tun driver. Not long after I touched the tun driver and made it safe to delete the network device while still holding it's file descriptor open I someone else touch the code adding a different feature and my careful work went up in flames. Which brought home another point at the best of it this is ultimately complex tricky code that subsystems should not need to worry about. What makes this even more interesting is that in the presence of pci hot-unplug it looks like most subsystems and most devices will have to deal with the issue one way or another. This infrastructure could also be used to implement both force unmounts and sys_revoke. When I could not think of a better name for I have drawn on that and used revoke. The following changes draw on and generalize the work in tty_io sysfs, proc, and sysctl and move it into the vfs level. Where the basic primitives are running faster, and the solution is more general. ... Changes since version 1. All of that lead to the first version of this patchset. The feedback I got from that was generally positive but there was a concern about performance when two there are two simultaneous accessors to the tty at the same time. After looking into the performance concerns of what happens when multiple programs access the same struct file and finding that I could not rule out a performance regression I have gone back and redesigned my mutual exclusion primitive creating something simpler and faster. I have also changed my synchronization primitives extending them to protect most of what is read-only in struct file today and abandoning rcu-ness of struct file. Giving up rcu-ness leads to true exclusion and makes the code much easier to think about. In this patchset is the basic code patchs 1-4 and a conversion of the vfs except for the nfsd entry points. Enough for a reasonable result. These patches are based on Al's vfs/for-next tree. The vfs changes in this patchset. Documentation/filesystems/vfs.txt | 5 + drivers/char/pty.c | 2 +- drivers/char/tty_io.c | 22 ++-- fs/Kconfig | 4 + fs/aio.c | 51 +++++-- fs/compat.c | 16 ++- fs/compat_ioctl.c | 14 ++- fs/eventpoll.c | 41 +++++- fs/fcntl.c | 28 +++-- fs/file_table.c | 281 +++++++++++++++++++++++++++++-------- fs/inode.c | 1 + fs/ioctl.c | 8 +- fs/locks.c | 8 +- fs/namei.c | 11 ++- fs/open.c | 81 +++++++++-- fs/proc/base.c | 29 ++-- fs/read_write.c | 122 ++++++++++++---- fs/readdir.c | 20 ++- fs/select.c | 53 ++++++- fs/splice.c | 111 ++++++++++----- fs/super.c | 1 - fs/sync.c | 9 +- include/linux/fs.h | 49 ++++++- include/linux/mm.h | 2 + include/linux/poll.h | 3 + include/linux/sched.h | 7 + include/linux/tty.h | 2 +- mm/fadvise.c | 7 + mm/filemap.c | 25 ++-- mm/memory.c | 98 +++++++++++++ mm/mmap.c | 78 +++++++---- mm/nommu.c | 21 +++- security/selinux/hooks.c | 8 +- 33 files changed, 950 insertions(+), 268 deletions(-) The necessary changes to proc to take advantage of this functionality. fs/proc/Kconfig | 1 + fs/proc/generic.c | 56 +++----- fs/proc/inode.c | 354 ++++------------------------------------------- fs/proc/internal.h | 1 + include/linux/proc_fs.h | 4 - 5 files changed, 44 insertions(+), 372 deletions(-)
WARNING: multiple messages have this Message-ID (diff)
From: ebiederm@xmission.com (Eric W. Biederman) To: Al Viro <viro@ZenIV.linux.org.uk> Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, Hugh Dickins <hugh@veritas.com>, Tejun Heo <tj@kernel.org>, Alexey Dobriyan <adobriyan@gmail.com>, Linus Torvalds <torvalds@linux-foundation.org>, Alan Cox <alan@lxorguk.ukuu.org.uk>, Greg Kroah-Hartman <gregkh@suse.de>, Nick Piggin <npiggin@suse.de>, Andrew Morton <akpm@linux-foundation.org>, Christoph Hellwig <hch@infradead.org> Subject: [PATCH 0/23] File descriptor hot-unplug support v2 Date: Mon, 01 Jun 2009 14:45:17 -0700 [thread overview] Message-ID: <m1oct739xu.fsf@fess.ebiederm.org> (raw) In-Reply-To: <m1skkf761y.fsf@fess.ebiederm.org> (Eric W. Biederman's message of "Sat\, 11 Apr 2009 05\:01\:29 -0700") I found myself looking at the uio, seeing that it does not support pci hot-unplug, and thinking "Great yet another implementation of hotunplug logic that needs to be added". I decided to see what it would take to add a generic implementation of the code we have for supporting hot unplugging devices in sysfs, proc, sysctl, tty_io, and now almost in the tun driver. Not long after I touched the tun driver and made it safe to delete the network device while still holding it's file descriptor open I someone else touch the code adding a different feature and my careful work went up in flames. Which brought home another point at the best of it this is ultimately complex tricky code that subsystems should not need to worry about. What makes this even more interesting is that in the presence of pci hot-unplug it looks like most subsystems and most devices will have to deal with the issue one way or another. This infrastructure could also be used to implement both force unmounts and sys_revoke. When I could not think of a better name for I have drawn on that and used revoke. The following changes draw on and generalize the work in tty_io sysfs, proc, and sysctl and move it into the vfs level. Where the basic primitives are running faster, and the solution is more general. ... Changes since version 1. All of that lead to the first version of this patchset. The feedback I got from that was generally positive but there was a concern about performance when two there are two simultaneous accessors to the tty at the same time. After looking into the performance concerns of what happens when multiple programs access the same struct file and finding that I could not rule out a performance regression I have gone back and redesigned my mutual exclusion primitive creating something simpler and faster. I have also changed my synchronization primitives extending them to protect most of what is read-only in struct file today and abandoning rcu-ness of struct file. Giving up rcu-ness leads to true exclusion and makes the code much easier to think about. In this patchset is the basic code patchs 1-4 and a conversion of the vfs except for the nfsd entry points. Enough for a reasonable result. These patches are based on Al's vfs/for-next tree. The vfs changes in this patchset. Documentation/filesystems/vfs.txt | 5 + drivers/char/pty.c | 2 +- drivers/char/tty_io.c | 22 ++-- fs/Kconfig | 4 + fs/aio.c | 51 +++++-- fs/compat.c | 16 ++- fs/compat_ioctl.c | 14 ++- fs/eventpoll.c | 41 +++++- fs/fcntl.c | 28 +++-- fs/file_table.c | 281 +++++++++++++++++++++++++++++-------- fs/inode.c | 1 + fs/ioctl.c | 8 +- fs/locks.c | 8 +- fs/namei.c | 11 ++- fs/open.c | 81 +++++++++-- fs/proc/base.c | 29 ++-- fs/read_write.c | 122 ++++++++++++---- fs/readdir.c | 20 ++- fs/select.c | 53 ++++++- fs/splice.c | 111 ++++++++++----- fs/super.c | 1 - fs/sync.c | 9 +- include/linux/fs.h | 49 ++++++- include/linux/mm.h | 2 + include/linux/poll.h | 3 + include/linux/sched.h | 7 + include/linux/tty.h | 2 +- mm/fadvise.c | 7 + mm/filemap.c | 25 ++-- mm/memory.c | 98 +++++++++++++ mm/mmap.c | 78 +++++++---- mm/nommu.c | 21 +++- security/selinux/hooks.c | 8 +- 33 files changed, 950 insertions(+), 268 deletions(-) The necessary changes to proc to take advantage of this functionality. fs/proc/Kconfig | 1 + fs/proc/generic.c | 56 +++----- fs/proc/inode.c | 354 ++++------------------------------------------- fs/proc/internal.h | 1 + include/linux/proc_fs.h | 4 - 5 files changed, 44 insertions(+), 372 deletions(-) -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2009-06-01 21:45 UTC|newest] Thread overview: 207+ messages / expand[flat|nested] mbox.gz Atom feed top 2009-04-11 12:01 [RFC][PATCH 0/9] File descriptor hot-unplug support Eric W. Biederman 2009-04-11 12:01 ` Eric W. Biederman 2009-04-11 12:03 ` [RFC][PATCH 1/9] mm: Introduce remap_file_mappings Eric W. Biederman 2009-04-11 12:03 ` Eric W. Biederman 2009-04-11 12:05 ` [RFC][PATCH 2/9] mm: Implement generic support for revoking a mapping Eric W. Biederman 2009-04-11 12:05 ` Eric W. Biederman 2009-04-11 12:05 ` Eric W. Biederman 2009-04-11 12:06 ` [RFC][PATCH 3/9] sysfs: Use remap_file_mappings Eric W. Biederman 2009-04-11 12:06 ` Eric W. Biederman 2009-04-11 12:06 ` Eric W. Biederman 2009-04-11 12:07 ` [RFC][PATCH 4/9] vfs: Generalize the file_list Eric W. Biederman 2009-04-11 12:07 ` Eric W. Biederman 2009-04-11 12:07 ` Eric W. Biederman 2009-04-11 12:08 ` [RFC][PATCH 5/9] vfs: Introduce basic infrastructure for revoking a file Eric W. Biederman 2009-04-11 12:08 ` Eric W. Biederman 2009-04-11 12:08 ` Eric W. Biederman 2009-04-14 22:12 ` Jonathan Corbet 2009-04-14 22:12 ` Jonathan Corbet 2009-04-15 2:55 ` Eric W. Biederman 2009-04-15 2:55 ` Eric W. Biederman 2009-04-15 2:55 ` Eric W. Biederman 2009-04-11 12:10 ` [RFC][PATCH 6/9] vfs: Utilize fops_read_lock where appropriate Eric W. Biederman 2009-04-11 12:10 ` Eric W. Biederman 2009-04-11 12:10 ` Eric W. Biederman 2009-04-11 12:11 ` [RFC][PATCH 7/9] vfs: Optimize fops_read_lock Eric W. Biederman 2009-04-11 12:11 ` Eric W. Biederman 2009-04-11 12:11 ` Eric W. Biederman 2009-04-11 12:13 ` [RFC][PATCH 8/9] vfs: Implement generic revoked file operations Eric W. Biederman 2009-04-11 12:13 ` Eric W. Biederman 2009-04-11 12:13 ` Eric W. Biederman 2009-04-12 18:56 ` Jamie Lokier 2009-04-12 18:56 ` Jamie Lokier 2009-04-12 20:04 ` Eric W. Biederman 2009-04-12 20:04 ` Eric W. Biederman 2009-04-12 20:31 ` Jamie Lokier 2009-04-12 20:31 ` Jamie Lokier 2009-04-12 21:53 ` Eric W. Biederman 2009-04-12 21:53 ` Eric W. Biederman 2009-04-12 20:54 ` Eric W. Biederman 2009-04-12 20:54 ` Eric W. Biederman 2009-04-12 21:02 ` Jamie Lokier 2009-04-12 21:02 ` Jamie Lokier 2009-04-12 23:06 ` Eric W. Biederman 2009-04-12 23:06 ` Eric W. Biederman 2009-04-11 12:14 ` [RFC][PATCH 9/9] proc: Use the generic vfs revoke facility that now exists Eric W. Biederman 2009-04-11 12:14 ` Eric W. Biederman 2009-04-11 15:58 ` [RFC][PATCH 0/9] File descriptor hot-unplug support Al Viro 2009-04-11 15:58 ` Al Viro 2009-04-11 16:49 ` Eric W. Biederman 2009-04-11 16:49 ` Eric W. Biederman 2009-04-11 16:56 ` Al Viro 2009-04-11 16:56 ` Al Viro 2009-04-11 23:57 ` Eric W. Biederman 2009-04-11 23:57 ` Eric W. Biederman 2009-04-12 20:21 ` Eric W. Biederman 2009-04-12 20:21 ` Eric W. Biederman 2009-04-14 3:16 ` Tejun Heo 2009-04-14 3:16 ` Tejun Heo 2009-04-14 7:39 ` Eric W. Biederman 2009-04-14 7:39 ` Eric W. Biederman 2009-04-14 7:45 ` Tejun Heo 2009-04-14 7:45 ` Tejun Heo 2009-04-14 8:27 ` Eric W. Biederman 2009-04-14 8:27 ` Eric W. Biederman 2009-04-14 8:49 ` Tejun Heo 2009-04-14 8:49 ` Tejun Heo 2009-04-14 15:07 ` Jamie Lokier 2009-04-14 15:07 ` Jamie Lokier 2009-04-14 19:09 ` Eric W. Biederman 2009-04-14 19:09 ` Eric W. Biederman 2009-06-01 21:45 ` Eric W. Biederman [this message] 2009-06-01 21:45 ` [PATCH 0/23] File descriptor hot-unplug support v2 Eric W. Biederman 2009-06-01 21:50 ` [PATCH 01/23] mm: Introduce revoke_file_mappings Eric W. Biederman 2009-06-01 21:50 ` Eric W. Biederman 2009-06-01 22:25 ` Andrew Morton 2009-06-01 22:25 ` Andrew Morton 2009-06-02 0:12 ` Eric W. Biederman 2009-06-02 0:12 ` Eric W. Biederman 2009-06-01 21:50 ` [PATCH 02/23] vfs: Implement unpoll_file Eric W. Biederman 2009-06-01 21:50 ` Eric W. Biederman 2009-06-06 8:08 ` Al Viro 2009-06-06 8:08 ` Al Viro 2009-06-01 21:50 ` [PATCH 03/23] vfs: Generalize the file_list Eric W. Biederman 2009-06-01 21:50 ` Eric W. Biederman 2009-06-02 7:06 ` Nick Piggin 2009-06-02 7:06 ` Nick Piggin 2009-06-05 19:33 ` Eric W. Biederman 2009-06-05 19:33 ` Eric W. Biederman 2009-06-09 10:38 ` Nick Piggin 2009-06-09 10:38 ` Nick Piggin 2009-06-09 18:38 ` Eric W. Biederman 2009-06-09 18:38 ` Eric W. Biederman 2009-06-10 6:05 ` Nick Piggin 2009-06-10 6:05 ` Nick Piggin 2009-06-01 21:50 ` [PATCH 04/23] vfs: Introduce infrastructure for revoking a file Eric W. Biederman 2009-06-01 21:50 ` Eric W. Biederman 2009-06-02 5:16 ` Pekka Enberg 2009-06-02 5:16 ` Pekka Enberg 2009-06-02 6:51 ` Eric W. Biederman 2009-06-02 6:51 ` Eric W. Biederman 2009-06-02 7:08 ` Pekka Enberg 2009-06-02 7:08 ` Pekka Enberg 2009-06-02 7:08 ` Pekka Enberg 2009-06-02 7:14 ` Nick Piggin 2009-06-02 7:14 ` Nick Piggin 2009-06-02 17:06 ` Linus Torvalds 2009-06-02 17:06 ` Linus Torvalds 2009-06-02 20:52 ` Eric W. Biederman 2009-06-02 20:52 ` Eric W. Biederman 2009-06-03 6:37 ` Nick Piggin 2009-06-03 6:37 ` Nick Piggin 2009-06-02 22:56 ` Eric W. Biederman 2009-06-02 22:56 ` Eric W. Biederman 2009-06-03 6:38 ` Nick Piggin 2009-06-03 6:38 ` Nick Piggin 2009-06-05 9:03 ` Miklos Szeredi 2009-06-05 9:03 ` Miklos Szeredi 2009-06-05 19:06 ` Eric W. Biederman 2009-06-05 19:06 ` Eric W. Biederman 2009-06-01 21:50 ` [PATCH 05/23] vfs: Teach lseek to use file_hotplug_lock Eric W. Biederman 2009-06-01 21:50 ` Eric W. Biederman 2009-06-01 21:50 ` [PATCH 06/23] vfs: Teach read/write to use file_hotplug_read_lock Eric W. Biederman 2009-06-01 21:50 ` Eric W. Biederman 2009-06-01 21:50 ` [PATCH 07/23] vfs: Teach sendfile,splice,tee,and vmsplice to use file_hotplug_lock Eric W. Biederman 2009-06-01 21:50 ` Eric W. Biederman 2009-06-03 23:39 ` Badari Pulavarty 2009-06-03 23:39 ` Badari Pulavarty 2009-06-05 19:37 ` Eric W. Biederman 2009-06-05 19:37 ` Eric W. Biederman 2009-06-01 21:50 ` [PATCH 08/23] vfs: Teach readdir " Eric W. Biederman 2009-06-01 21:50 ` Eric W. Biederman 2009-06-01 21:50 ` [PATCH 09/23] vfs: Teach poll and select " Eric W. Biederman 2009-06-01 21:50 ` Eric W. Biederman 2009-06-01 21:50 ` [PATCH 10/23] vfs: Teach do_path_lookup " Eric W. Biederman 2009-06-01 21:50 ` Eric W. Biederman 2009-06-01 21:50 ` [PATCH 11/23] mm: Teach mmap " Eric W. Biederman 2009-06-01 21:50 ` Eric W. Biederman 2009-06-01 21:50 ` [PATCH 12/23] vfs: Teach fcntl " Eric W. Biederman 2009-06-01 21:50 ` Eric W. Biederman 2009-06-01 21:50 ` [PATCH 13/23] vfs: Teach ioctl " Eric W. Biederman 2009-06-01 21:50 ` Eric W. Biederman 2009-06-01 21:50 ` [PATCH 14/23] vfs: Teach flock " Eric W. Biederman 2009-06-01 21:50 ` Eric W. Biederman 2009-06-01 21:50 ` [PATCH 15/23] vfs: Teach fallocate, and filp_close " Eric W. Biederman 2009-06-01 21:50 ` Eric W. Biederman 2009-06-01 21:50 ` [PATCH 16/23] vfs: Teach fstatfs, fstatfs64, ftruncate, fchdir, fchmod, fchown " Eric W. Biederman 2009-06-01 21:50 ` Eric W. Biederman 2009-06-01 21:50 ` [PATCH 17/23] proc: Teach /proc/<pid>/fd " Eric W. Biederman 2009-06-01 21:50 ` Eric W. Biederman 2009-06-01 21:50 ` [PATCH 18/23] vfs: Teach epoll " Eric W. Biederman 2009-06-01 21:50 ` Eric W. Biederman 2009-06-02 16:51 ` Davide Libenzi 2009-06-02 16:51 ` Davide Libenzi 2009-06-02 21:23 ` Eric W. Biederman 2009-06-02 21:23 ` Eric W. Biederman 2009-06-02 21:52 ` Davide Libenzi 2009-06-02 21:52 ` Davide Libenzi 2009-06-02 22:51 ` Eric W. Biederman 2009-06-02 22:51 ` Eric W. Biederman 2009-06-03 14:57 ` Davide Libenzi 2009-06-03 14:57 ` Davide Libenzi 2009-06-03 20:53 ` Eric W. Biederman 2009-06-03 20:53 ` Eric W. Biederman 2009-06-04 0:50 ` Davide Libenzi 2009-06-04 0:50 ` Davide Libenzi 2009-06-04 1:42 ` Eric W. Biederman 2009-06-04 1:42 ` Eric W. Biederman 2009-06-01 21:50 ` [PATCH 19/23] eventpoll: Fix comment Eric W. Biederman 2009-06-01 21:50 ` Eric W. Biederman 2009-06-01 21:50 ` [PATCH 20/23] vfs: Teach aio to use file_hotplug_lock Eric W. Biederman 2009-06-01 21:50 ` Eric W. Biederman 2009-06-01 21:50 ` [PATCH 21/23] vfs: Teach fsync " Eric W. Biederman 2009-06-01 21:50 ` Eric W. Biederman 2009-06-01 21:50 ` [PATCH 22/23] vfs: Teach fadvice to file_hotplug_lock Eric W. Biederman 2009-06-01 21:50 ` Eric W. Biederman 2009-06-01 21:50 ` [PATCH 23/23] vfs: Teach readahead to use the file_hotplug_lock Eric W. Biederman 2009-06-01 21:50 ` Eric W. Biederman 2009-06-03 23:25 ` Badari Pulavarty 2009-06-03 23:25 ` Badari Pulavarty 2009-06-06 8:03 ` [PATCH 0/23] File descriptor hot-unplug support v2 Al Viro 2009-06-06 8:03 ` Al Viro 2009-06-08 9:41 ` Miklos Szeredi 2009-06-08 9:41 ` Miklos Szeredi 2009-06-08 10:24 ` Jamie Lokier 2009-06-08 10:24 ` Jamie Lokier 2009-06-08 16:29 ` Al Viro 2009-06-08 16:29 ` Al Viro 2009-06-08 16:44 ` Miklos Szeredi 2009-06-08 16:44 ` Miklos Szeredi 2009-06-08 17:50 ` Al Viro 2009-06-08 17:50 ` Al Viro 2009-06-08 18:01 ` Linus Torvalds 2009-06-08 18:01 ` Linus Torvalds 2009-06-08 18:50 ` Al Viro 2009-06-08 18:50 ` Al Viro 2009-06-08 19:18 ` Linus Torvalds 2009-06-08 19:18 ` Linus Torvalds 2009-06-09 6:42 ` Eric W. Biederman 2009-06-09 6:42 ` Eric W. Biederman 2009-06-09 10:52 ` Nick Piggin 2009-06-09 10:52 ` Nick Piggin 2009-06-09 5:50 ` Miklos Szeredi 2009-06-09 5:50 ` Miklos Szeredi 2009-06-09 6:31 ` Eric W. Biederman 2009-06-09 6:31 ` Eric W. Biederman 2009-06-09 6:22 ` Eric W. Biederman 2009-06-09 6:22 ` Eric W. Biederman
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=m1oct739xu.fsf@fess.ebiederm.org \ --to=ebiederm@xmission.com \ --cc=adobriyan@gmail.com \ --cc=akpm@linux-foundation.org \ --cc=alan@lxorguk.ukuu.org.uk \ --cc=gregkh@suse.de \ --cc=hch@infradead.org \ --cc=hugh@veritas.com \ --cc=linux-fsdevel@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=linux-pci@vger.kernel.org \ --cc=npiggin@suse.de \ --cc=tj@kernel.org \ --cc=torvalds@linux-foundation.org \ --cc=viro@ZenIV.linux.org.uk \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.