Messages in this thread Patch in this message | | | Subject | Re: [PATCH] task_work: remove fifo ordering guarantee | From | Eric Dumazet <> | Date | Sat, 29 Aug 2015 07:11:13 -0700 |
| |
On Sat, 2015-08-29 at 06:57 -0700, Eric Dumazet wrote:
> Now we also could question why we needed commit > 4a9d4b024a3102fc083c925c242d98ac27b1c5f6 ("switch fput to task_work_add > ") since it seems quite an overhead at task exit with 10^6 of files to > close. > > I understood the 'schedule_work() for interrupt/kernel_thread callers' > part, but not the task_work_add() one.
If this needs to be kept, maybe then add following, to make sure we flush the list at most every BITS_PER_LONG files
diff --git a/fs/file.c b/fs/file.c index 6c672ad329e9..f3d0a79cef05 100644 --- a/fs/file.c +++ b/fs/file.c @@ -22,6 +22,7 @@ #include <linux/spinlock.h> #include <linux/rcupdate.h> #include <linux/workqueue.h> +#include <linux/task_work.h> int sysctl_nr_open __read_mostly = 1024*1024; int sysctl_nr_open_min = BITS_PER_LONG; @@ -392,6 +393,7 @@ static struct fdtable *close_files(struct files_struct * files) i++; set >>= 1; } + task_work_run(); } return fdt;
| |