public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Leonid Ananiev <leonid.i.ananiev@linux.intel.com>
To: linux-kernel@vger.kernel.org, linux-aio@kvack.org
Subject: [PATCH 2/3] aio: fix oops because of extra IO control block freeing.
Date: Thu, 08 Mar 2007 21:37:21 +0300	[thread overview]
Message-ID: <45F057E1.60107@linux.intel.com> (raw)

 From Leonid Ananiev

This patch finishes moving from using errno EIOCBRETRY to using flag in 
IO control block for aio retrying. After this change the process will be 
kicked for direct aio as it was for sync aio.

Signed-off-by: Leonid Ananiev <leonid.i.ananiev@intel.com>

The patch is applied to 2.6.20 or 2.6.21-rc2
diff -uprN -X linux-2.6.20-aio21/Documentation/dontdiff 
linux-2.6.20-aio21/drivers/usb/gadget/inode.c 
linux-2.6.20-aio22/drivers/usb/gadget/inode.c
--- linux-2.6.20-aio21/drivers/usb/gadget/inode.c    2007-03-04 
21:45:52.000000000 +0300
+++ linux-2.6.20-aio22/drivers/usb/gadget/inode.c    2007-03-05 
18:19:35.000000000 +0300
@@ -692,7 +692,10 @@ fail:
          kfree(priv);
          put_ep(epdata);
      } else
-        value = (iv ? -EIOCBRETRY : -EIOCBQUEUED);
+        if (iv)
+            kiocbSetPgBusy(iocb);
+        else
+            value = -EIOCBQUEUED;
      return value;
  }

diff -uprN -X linux-2.6.20-aio21/Documentation/dontdiff 
linux-2.6.20-aio21/fs/ocfs2/dlmglue.c linux-2.6.20-aio22/fs/ocfs2/dlmglue.c
--- linux-2.6.20-aio21/fs/ocfs2/dlmglue.c    2007-03-04 
21:45:52.000000000 +0300
+++ linux-2.6.20-aio22/fs/ocfs2/dlmglue.c    2007-03-04 
22:57:50.000000000 +0300
@@ -1639,7 +1639,7 @@ int ocfs2_meta_lock_full(struct inode *i

      status = ocfs2_cluster_lock(osb, lockres, level, dlm_flags, 
arg_flags);
      if (status < 0) {
-        if (status != -EAGAIN && status != -EIOCBRETRY)
+        if (status != -EAGAIN)
              mlog_errno(status);
          goto bail;
      }
diff -uprN -X linux-2.6.20-aio21/Documentation/dontdiff 
linux-2.6.20-aio21/include/linux/aio.h 
linux-2.6.20-aio22/include/linux/aio.h
--- linux-2.6.20-aio21/include/linux/aio.h    2007-03-04 
21:46:45.000000000 +0300
+++ linux-2.6.20-aio22/include/linux/aio.h    2007-03-04 
22:57:50.000000000 +0300
@@ -79,15 +79,6 @@ struct kioctx;
   * not ask the method again -- ki_retry must ensure forward progress.
   * aio_complete() must be called once and only once in the future, 
multiple
   * calls may result in undefined behaviour.
- *
- * If ki_retry returns -EIOCBRETRY it has made a promise that kick_iocb()
- * will be called on the kiocb pointer in the future.  This may happen
- * through generic helpers that associate kiocb->ki_wait with a wait
- * queue head that ki_retry uses via current->io_wait.  It can also happen
- * with custom tracking and manual calls to kick_iocb(), though that is
- * discouraged.  In either case, kick_iocb() must be called once and only
- * once.  ki_retry must ensure forward progress, the AIO core will wait
- * indefinitely for kick_iocb() to be called.
   */
  struct kiocb {
      struct list_head    ki_run_list;
diff -uprN -X linux-2.6.20-aio21/Documentation/dontdiff 
linux-2.6.20-aio21/include/linux/errno.h 
linux-2.6.20-aio22/include/linux/errno.h
--- linux-2.6.20-aio21/include/linux/errno.h    2007-03-04 
21:45:51.000000000 +0300
+++ linux-2.6.20-aio22/include/linux/errno.h    2007-03-04 
22:57:50.000000000 +0300
@@ -22,7 +22,6 @@
  #define EBADTYPE    527    /* Type not supported by server */
  #define EJUKEBOX    528    /* Request initiated, but will not complete 
before timeout */
  #define EIOCBQUEUED    529    /* iocb queued, will get completion event */
-#define EIOCBRETRY    530    /* iocb queued, will trigger a retry */

  #endif

             reply	other threads:[~2007-03-08 18:37 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-03-08 18:37 Leonid Ananiev [this message]
     [not found] <45EC3FAA.10509@linux.intel.com>
2007-03-05 19:35 ` [PATCH 2/3] aio: fix oops because of extra IO control block freeing Alan Stern
2007-03-05 20:08   ` Ananiev, Leonid I
2007-03-05 21:24     ` Alan Stern

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=45F057E1.60107@linux.intel.com \
    --to=leonid.i.ananiev@linux.intel.com \
    --cc=leonid.i.ananiev@intel.com \
    --cc=linux-aio@kvack.org \
    --cc=linux-kernel@vger.kernel.org \
    /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: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox