From: Stefan S. <dev...@gm...> - 2012-09-18 09:17:04
|
Hi, I was wondering if there is any kind of parallelism in the CUSE callbacks that one needs to care for. In my current implementation I have CUSE callbacks for read and write. There is an application, that performs all kinds of operations on the CUSE device I create, read() and write() being among them. I have no idea what the application does internally, but I definitely know that it makes use of fork() and pthreads. In my code, it looks like the following is happening: 1) a READ request is made 2) processing the read request is started in cuse_read_callback() 3) a WRITE request appears at some point 3) cuse_read_callback() seems to be interrupted and cuse_write_callback() takes over Since the callbacks in my code communicate with a remote server, this leads to errors. For instance, the read request is forwarded to the remote server which processes the request and sends a response to the read request. However, at that point the write callback has taken over already, it sends the write request and immediately receives the response to the read request. This fails of course. * So, with respect to fork() and pthreads, how does CUSE behave and what can I do ? * Does CUSE use pthreads or forks internally ? * What happens, if a program using fork() or pthreads performs different operations on a generated CUSE device in parallel ? * What can I do to solve the issues ? I was thinking about adding a pthread mutex so that all callback operations are atomic. However, this would only work if CUSE uses pthreads internally. Is this the case ? Regards, Stefan |