Index: trunk/kernel/kern/rpc.c
===================================================================
--- trunk/kernel/kern/rpc.c	(revision 457)
+++ trunk/kernel/kern/rpc.c	(revision 459)
@@ -980,4 +980,11 @@
                                   error_t      * error )     // out
 {
+#if DEBUG_RPC_VFS_INODE_CREATE
+uint32_t cycle = (uint32_t)hal_get_cycles();
+if( cycle > DEBUG_RPC_VFS_INODE_CREATE )
+printk("\n[DBG] %s : thread %x enter on core[%x,%d] / cycle %d\n",
+__FUNCTION__ , CURRENT_THREAD , local_cxy, CURRENT_THREAD->core->lid , cycle );
+#endif
+
     assert( (cxy != local_cxy) , __FUNCTION__ , "target cluster is not remote\n");
 
@@ -1005,4 +1012,10 @@
     *error    = (error_t)rpc.args[9];
 
+#if DEBUG_RPC_VFS_INODE_CREATE
+uint32_t cycle = (uint32_t)hal_get_cycles();
+if( cycle > DEBUG_RPC_VFS_INODE_CREATE )
+printk("\n[DBG] %s : thread %x exit on core[%x,%d] / cycle %d\n",
+__FUNCTION__ , CURRENT_THREAD , local_cxy, CURRENT_THREAD->core->lid , cycle );
+#endif
 }
 
@@ -1010,4 +1023,11 @@
 void rpc_vfs_inode_create_server( xptr_t xp )
 {
+#if DEBUG_RPC_VFS_INODE_CREATE
+uint32_t cycle = (uint32_t)hal_get_cycles();
+if( cycle > DEBUG_RPC_VFS_INODE_CREATE )
+printk("\n[DBG] %s : thread %x enter on core[%x,%d] / cycle %d\n",
+__FUNCTION__ , CURRENT_THREAD , local_cxy, CURRENT_THREAD->core->lid , cycle );
+#endif
+
     xptr_t           dentry_xp;
     uint32_t         fs_type;
@@ -1050,4 +1070,10 @@
     hal_remote_swd( XPTR( client_cxy , &desc->args[9] ) , (uint64_t)error );
 
+#if DEBUG_RPC_VFS_INODE_CREATE
+uint32_t cycle = (uint32_t)hal_get_cycles();
+if( cycle > DEBUG_RPC_VFS_INODE_CREATE )
+printk("\n[DBG] %s : thread %x exit on core[%x,%d] / cycle %d\n",
+__FUNCTION__ , CURRENT_THREAD , local_cxy, CURRENT_THREAD->core->lid , cycle );
+#endif
 }
 
@@ -1058,6 +1084,14 @@
 /////////////////////////////////////////////////////////////
 void rpc_vfs_inode_destroy_client( cxy_t                cxy,
-                                   struct vfs_inode_s * inode )
-{
+                                   struct vfs_inode_s * inode,
+                                   error_t            * error )
+{
+#if DEBUG_RPC_VFS_INODE_DESTROY
+uint32_t cycle = (uint32_t)hal_get_cycles();
+if( cycle > DEBUG_RPC_VFS_INODE_DESTROY )
+printk("\n[DBG] %s : thread %x enter on core[%x,%d] / cycle %d\n",
+__FUNCTION__ , CURRENT_THREAD , local_cxy, CURRENT_THREAD->core->lid , cycle );
+#endif
+
     assert( (cxy != local_cxy) , __FUNCTION__ , "target cluster is not remote\n");
 
@@ -1074,4 +1108,10 @@
     rpc_send( cxy , &rpc );
 
+#if DEBUG_RPC_VFS_INODE_DESTROY
+uint32_t cycle = (uint32_t)hal_get_cycles();
+if( cycle > DEBUG_RPC_VFS_INODE_DESTROY )
+printk("\n[DBG] %s : thread %x exit on core[%x,%d] / cycle %d\n",
+__FUNCTION__ , CURRENT_THREAD , local_cxy, CURRENT_THREAD->core->lid , cycle );
+#endif
 }
 
@@ -1079,5 +1119,13 @@
 void rpc_vfs_inode_destroy_server( xptr_t xp )
 {
+#if DEBUG_RPC_VFS_INODE_DESTROY
+uint32_t cycle = (uint32_t)hal_get_cycles();
+if( cycle > DEBUG_RPC_VFS_INODE_DESTROY )
+printk("\n[DBG] %s : thread %x enter on core[%x,%d] / cycle %d\n",
+__FUNCTION__ , CURRENT_THREAD , local_cxy, CURRENT_THREAD->core->lid , cycle );
+#endif
+
     vfs_inode_t * inode;
+    error_t       error;
 
     // get client cluster identifier and pointer on RPC descriptor
@@ -1089,6 +1137,15 @@
                        
     // call local kernel function
-    vfs_inode_destroy( inode );
-
+    error = vfs_inode_destroy( inode );
+
+    // set output argument
+    hal_remote_swd( XPTR( client_cxy , &desc->args[1] ) , (uint64_t)error );
+
+#if DEBUG_RPC_VFS_INODE_DESTROY
+uint32_t cycle = (uint32_t)hal_get_cycles();
+if( cycle > DEBUG_RPC_VFS_INODE_DESTROY )
+printk("\n[DBG] %s : thread %x exit on core[%x,%d] / cycle %d\n",
+__FUNCTION__ , CURRENT_THREAD , local_cxy, CURRENT_THREAD->core->lid , cycle );
+#endif
 }
 
@@ -1194,5 +1251,6 @@
 ///////////////////////////////////////////////////////
 void rpc_vfs_dentry_destroy_client( cxy_t          cxy,
-                                    vfs_dentry_t * dentry )
+                                    vfs_dentry_t * dentry,
+                                    error_t      * error )
 {
 #if DEBUG_RPC_VFS_DENTRY_DESTROY
@@ -1236,4 +1294,5 @@
 
     vfs_dentry_t * dentry;
+    error_t        error;
 
     // get client cluster identifier and pointer on RPC descriptor
@@ -1245,5 +1304,8 @@
                        
     // call local kernel function
-    vfs_dentry_destroy( dentry );
+    error = vfs_dentry_destroy( dentry );
+
+    // set output argument
+    hal_remote_swd( XPTR( client_cxy , &desc->args[1] ) , (uint64_t)error );
 
 #if DEBUG_RPC_VFS_DENTRY_DESTROY
