AIO deletion race fix
authorAlexander Graf <alex@csgraf.de>
Wed, 6 May 2009 00:58:48 +0000 (02:58 +0200)
committerAnthony Liguori <aliguori@us.ibm.com>
Fri, 8 May 2009 20:24:10 +0000 (15:24 -0500)
commit79d5ca5617cfc9be13a4f314ed800fca1267d903
treeed554981d814ff9e0b5bc9ae9628f1833c6d24df
parentd6ecb03610dba922cbfde42acb41603e2c658047
AIO deletion race fix

When deleting an fd event there is a chance the object doesn't get
deleted, but only ->deleted set positive and deleted somewhere later.

Now, if we create a handler for the fd again before the actual
deletion occurs, we end up writing data into an object that has
->deleted set, which is obviously wrong.

I see two ways to fix this:

1. Don't return ->deleted objects in the search
2. Unset ->deleted in the search

This patch implements 1. which feels safer to do. It fixes AIO issues
I've seen with curl, as libcurl unsets fd event listeners pretty
frequently.

Signed-off-by: Alexander Graf <alex@csgraf.de>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
aio.c