summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--patches/fs-aio-simple-simple-work.patch48
-rw-r--r--patches/localversion.patch2
2 files changed, 13 insertions, 37 deletions
diff --git a/patches/fs-aio-simple-simple-work.patch b/patches/fs-aio-simple-simple-work.patch
index 112840171a19..671f2032b237 100644
--- a/patches/fs-aio-simple-simple-work.patch
+++ b/patches/fs-aio-simple-simple-work.patch
@@ -24,8 +24,8 @@ Reported-By: Mike Galbraith <umgwanakikbuti@gmail.com>
Suggested-by: Benjamin LaHaise <bcrl@kvack.org>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
- fs/aio.c | 24 +++++++++++++++++-------
- 1 file changed, 17 insertions(+), 7 deletions(-)
+ fs/aio.c | 15 +++++++++++++--
+ 1 file changed, 13 insertions(+), 2 deletions(-)
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -37,16 +37,15 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
#include <asm/kmap_types.h>
#include <linux/uaccess.h>
-@@ -115,7 +116,7 @@ struct kioctx {
- struct page **ring_pages;
- long nr_pages;
+@@ -117,6 +118,7 @@ struct kioctx {
-- struct work_struct free_work;
-+ struct swork_event free_work;
+ struct rcu_head free_rcu;
+ struct work_struct free_work; /* see free_ioctx() */
++ struct swork_event free_swork; /* see free_ioctx() */
/*
* signals when all in-flight requests are done
-@@ -258,6 +259,7 @@ static int __init aio_setup(void)
+@@ -259,6 +261,7 @@ static int __init aio_setup(void)
.mount = aio_mount,
.kill_sb = kill_anon_super,
};
@@ -54,30 +53,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
aio_mnt = kern_mount(&aio_fs);
if (IS_ERR(aio_mnt))
panic("Failed to create aio fs mount.");
-@@ -588,9 +590,9 @@ static int kiocb_cancel(struct aio_kiocb
- return cancel(&kiocb->common);
- }
-
--static void free_ioctx(struct work_struct *work)
-+static void free_ioctx(struct swork_event *sev)
- {
-- struct kioctx *ctx = container_of(work, struct kioctx, free_work);
-+ struct kioctx *ctx = container_of(sev, struct kioctx, free_work);
-
- pr_debug("freeing %p\n", ctx);
-
-@@ -609,8 +611,8 @@ static void free_ioctx_reqs(struct percp
- if (ctx->rq_wait && atomic_dec_and_test(&ctx->rq_wait->count))
- complete(&ctx->rq_wait->comp);
-
-- INIT_WORK(&ctx->free_work, free_ioctx);
-- schedule_work(&ctx->free_work);
-+ INIT_SWORK(&ctx->free_work, free_ioctx);
-+ swork_queue(&ctx->free_work);
- }
-
- /*
-@@ -618,9 +620,9 @@ static void free_ioctx_reqs(struct percp
+@@ -633,9 +636,9 @@ static void free_ioctx_reqs(struct percp
* and ctx->users has dropped to 0, so we know no more kiocbs can be submitted -
* now it's safe to cancel any that need to be.
*/
@@ -85,11 +61,11 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+static void free_ioctx_users_work(struct swork_event *sev)
{
- struct kioctx *ctx = container_of(ref, struct kioctx, users);
-+ struct kioctx *ctx = container_of(sev, struct kioctx, free_work);
++ struct kioctx *ctx = container_of(sev, struct kioctx, free_swork);
struct aio_kiocb *req;
spin_lock_irq(&ctx->ctx_lock);
-@@ -639,6 +641,14 @@ static void free_ioctx_users(struct perc
+@@ -654,6 +657,14 @@ static void free_ioctx_users(struct perc
percpu_ref_put(&ctx->reqs);
}
@@ -97,8 +73,8 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+{
+ struct kioctx *ctx = container_of(ref, struct kioctx, users);
+
-+ INIT_SWORK(&ctx->free_work, free_ioctx_users_work);
-+ swork_queue(&ctx->free_work);
++ INIT_SWORK(&ctx->free_swork, free_ioctx_users_work);
++ swork_queue(&ctx->free_swork);
+}
+
static int ioctx_add_table(struct kioctx *ctx, struct mm_struct *mm)
diff --git a/patches/localversion.patch b/patches/localversion.patch
index cad0c1aa7aa9..619fa3040f83 100644
--- a/patches/localversion.patch
+++ b/patches/localversion.patch
@@ -10,4 +10,4 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- /dev/null
+++ b/localversion-rt
@@ -0,0 +1 @@
-+-rt23
++-rt24