Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 4bda76b in mainline


Ignore:
Timestamp:
2009-05-29T18:01:08Z (13 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master
Children:
d0a1d961
Parents:
84adbf0
Message:

serialization of VFS_OPEN implementation to avoid lockup by concurrent open() operations from multiple tasks

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/vfs/vfs_ops.c

    r84adbf0 r4bda76b  
    487487void vfs_open(ipc_callid_t rid, ipc_call_t *request)
    488488{
     489        async_serialize_start();
     490       
    489491        if (!vfs_files_init()) {
    490492                ipc_answer_0(rid, ENOMEM);
     493                async_serialize_end();
    491494                return;
    492495        }
     
    512515            (lflag & (L_FILE | L_DIRECTORY)) == (L_FILE | L_DIRECTORY)) {
    513516                ipc_answer_0(rid, EINVAL);
     517                async_serialize_end();
    514518                return;
    515519        }
     
    525529                ipc_answer_0(callid, EINVAL);
    526530                ipc_answer_0(rid, EINVAL);
     531                async_serialize_end();
    527532                return;
    528533        }
     
    531536                ipc_answer_0(callid, ENOMEM);
    532537                ipc_answer_0(rid, ENOMEM);
     538                async_serialize_end();
    533539                return;
    534540        }
     
    537543                ipc_answer_0(rid, rc);
    538544                free(path);
     545                async_serialize_end();
    539546                return;
    540547        }
     
    561568                ipc_answer_0(rid, rc);
    562569                free(path);
     570                async_serialize_end();
    563571                return;
    564572        }
     
    583591                                vfs_node_put(node);
    584592                                ipc_answer_0(rid, rc);
     593                                async_serialize_end();
    585594                                return;
    586595                        }
     
    598607                vfs_node_put(node);
    599608                ipc_answer_0(rid, fd);
     609                async_serialize_end();
    600610                return;
    601611        }
     
    617627        /* Success! Return the new file descriptor to the client. */
    618628        ipc_answer_1(rid, EOK, fd);
     629        async_serialize_end();
    619630}
    620631
Note: See TracChangeset for help on using the changeset viewer.