/trunk/uspace/srv/vfs/vfs.c |
---|
59,7 → 59,7 |
* The connection was opened via the IPC_CONNECT_ME_TO call. |
* This call needs to be answered. |
*/ |
ipc_answer_fast_0(iid, EOK); |
ipc_answer_0(iid, EOK); |
/* |
* Here we enter the main connection fibril loop. |
103,7 → 103,7 |
case VFS_UNLINK: |
case VFS_RENAME: |
default: |
ipc_answer_fast_0(callid, ENOTSUP); |
ipc_answer_0(callid, ENOTSUP); |
break; |
} |
} |
/trunk/uspace/srv/vfs/vfs_open.c |
---|
46,7 → 46,7 |
void vfs_open(ipc_callid_t rid, ipc_call_t *request) |
{ |
if (!vfs_files_init()) { |
ipc_answer_fast_0(rid, ENOMEM); |
ipc_answer_0(rid, ENOMEM); |
return; |
} |
60,11 → 60,10 |
size_t size; |
ipc_callid_t callid; |
ipc_call_t call; |
if (!ipc_data_receive(&callid, &call, NULL, &size)) { |
ipc_answer_fast_0(callid, EINVAL); |
ipc_answer_fast_0(rid, EINVAL); |
if (!ipc_data_receive(&callid, NULL, &size)) { |
ipc_answer_0(callid, EINVAL); |
ipc_answer_0(rid, EINVAL); |
return; |
} |
77,14 → 76,14 |
char *path = malloc(size); |
if (!path) { |
ipc_answer_fast_0(callid, ENOMEM); |
ipc_answer_fast_0(rid, ENOMEM); |
ipc_answer_0(callid, ENOMEM); |
ipc_answer_0(rid, ENOMEM); |
return; |
} |
int rc; |
if ((rc = ipc_data_deliver(callid, &call, path, size))) { |
ipc_answer_fast_0(rid, rc); |
if ((rc = ipc_data_deliver(callid, path, size))) { |
ipc_answer_0(rid, rc); |
free(path); |
return; |
} |
103,7 → 102,7 |
rc = vfs_lookup_internal(path, size, &triplet, NULL); |
if (rc) { |
futex_up(&unlink_futex); |
ipc_answer_fast_0(rid, rc); |
ipc_answer_0(rid, rc); |
free(path); |
return; |
} |
123,7 → 122,7 |
int fd = vfs_fd_alloc(); |
if (fd < 0) { |
vfs_node_put(node); |
ipc_answer_fast_0(rid, fd); |
ipc_answer_0(rid, fd); |
return; |
} |
vfs_file_t *file = vfs_file_get(fd); |
142,7 → 141,7 |
/* |
* Success! Return the new file descriptor to the client. |
*/ |
ipc_answer_fast_1(rid, EOK, fd); |
ipc_answer_1(rid, EOK, fd); |
} |
/** |
/trunk/uspace/srv/vfs/vfs_mount.c |
---|
84,11 → 84,10 |
* system and the path of the mountpoint. |
*/ |
ipc_callid_t callid; |
ipc_call_t call; |
size_t size; |
if (!ipc_data_receive(&callid, &call, NULL, &size)) { |
ipc_answer_fast_0(callid, EINVAL); |
ipc_answer_fast_0(rid, EINVAL); |
if (!ipc_data_receive(&callid, NULL, &size)) { |
ipc_answer_0(callid, EINVAL); |
ipc_answer_0(rid, EINVAL); |
return; |
} |
99,8 → 98,8 |
*/ |
if ((size < FS_NAME_MAXLEN + 1) || |
(size > FS_NAME_MAXLEN + MAX_PATH_LEN)) { |
ipc_answer_fast_0(callid, EINVAL); |
ipc_answer_fast_0(rid, EINVAL); |
ipc_answer_0(callid, EINVAL); |
ipc_answer_0(rid, EINVAL); |
return; |
} |
110,8 → 109,8 |
uint8_t *buf; |
buf = malloc(size); |
if (!buf) { |
ipc_answer_fast_0(callid, ENOMEM); |
ipc_answer_fast_0(rid, ENOMEM); |
ipc_answer_0(callid, ENOMEM); |
ipc_answer_0(rid, ENOMEM); |
return; |
} |
118,7 → 117,7 |
/* |
* Deliver the data. |
*/ |
(void) ipc_data_deliver(callid, &call, buf, size); |
(void) ipc_data_deliver(callid, buf, size); |
char fs_name[FS_NAME_MAXLEN + 1]; |
memcpy(fs_name, buf, FS_NAME_MAXLEN); |
131,7 → 130,7 |
int fs_handle = fs_name_to_handle(fs_name, true); |
if (!fs_handle) { |
free(buf); |
ipc_answer_fast_0(rid, ENOENT); |
ipc_answer_0(rid, ENOENT); |
return; |
} |
146,13 → 145,13 |
rc = lookup_root(fs_handle, dev_handle, &mounted_root); |
if (rc != EOK) { |
free(buf); |
ipc_answer_fast_0(rid, rc); |
ipc_answer_0(rid, rc); |
return; |
} |
vfs_node_t *mr_node = vfs_node_get(&mounted_root); |
if (!mr_node) { |
free(buf); |
ipc_answer_fast_0(rid, ENOMEM); |
ipc_answer_0(rid, ENOMEM); |
return; |
} |
176,7 → 175,7 |
futex_up(&rootfs_futex); |
vfs_node_put(mr_node); /* failed -> drop reference */ |
free(buf); |
ipc_answer_fast_0(rid, rc); |
ipc_answer_0(rid, rc); |
return; |
} |
mp_node = vfs_node_get(&mp); |
185,7 → 184,7 |
futex_up(&rootfs_futex); |
vfs_node_put(mr_node); /* failed -> drop reference */ |
free(buf); |
ipc_answer_fast_0(rid, ENOMEM); |
ipc_answer_0(rid, ENOMEM); |
return; |
} |
/* |
206,7 → 205,7 |
rootfs = mounted_root; |
futex_up(&rootfs_futex); |
free(buf); |
ipc_answer_fast_0(rid, EOK); |
ipc_answer_0(rid, EOK); |
return; |
} else { |
/* |
216,7 → 215,7 |
futex_up(&rootfs_futex); |
free(buf); |
vfs_node_put(mr_node); /* failed -> drop reference */ |
ipc_answer_fast_0(rid, ENOENT); |
ipc_answer_0(rid, ENOENT); |
return; |
} |
} |
254,11 → 253,11 |
} |
if (rc2 == EOK) |
ipc_answer_fast_0(rid, rc1); |
ipc_answer_0(rid, rc1); |
else if (rc1 == EOK) |
ipc_answer_fast_0(rid, rc2); |
ipc_answer_0(rid, rc2); |
else |
ipc_answer_fast_0(rid, rc1); |
ipc_answer_0(rid, rc1); |
} |
/** |
/trunk/uspace/srv/vfs/vfs_register.c |
---|
155,13 → 155,13 |
* The first call has to be IPC_M_DATA_SEND in which we receive the |
* VFS info structure from the client FS. |
*/ |
if (!ipc_data_receive(&callid, &call, NULL, &size)) { |
if (!ipc_data_receive(&callid, NULL, &size)) { |
/* |
* The client doesn't obey the same protocol as we do. |
*/ |
dprintf("Receiving of VFS info failed.\n"); |
ipc_answer_fast_0(callid, EINVAL); |
ipc_answer_fast_0(rid, EINVAL); |
ipc_answer_0(callid, EINVAL); |
ipc_answer_0(rid, EINVAL); |
return; |
} |
177,8 → 177,8 |
* the info structure. |
*/ |
dprintf("Received VFS info has bad size.\n"); |
ipc_answer_fast_0(callid, EINVAL); |
ipc_answer_fast_0(rid, EINVAL); |
ipc_answer_0(callid, EINVAL); |
ipc_answer_0(rid, EINVAL); |
return; |
} |
189,19 → 189,19 |
fs_info = (fs_info_t *) malloc(sizeof(fs_info_t)); |
if (!fs_info) { |
dprintf("Could not allocate memory for FS info.\n"); |
ipc_answer_fast_0(callid, ENOMEM); |
ipc_answer_fast_0(rid, ENOMEM); |
ipc_answer_0(callid, ENOMEM); |
ipc_answer_0(rid, ENOMEM); |
return; |
} |
link_initialize(&fs_info->fs_link); |
rc = ipc_data_deliver(callid, &call, &fs_info->vfs_info, size); |
rc = ipc_data_deliver(callid, &fs_info->vfs_info, size); |
if (rc != EOK) { |
dprintf("Failed to deliver the VFS info into our AS, rc=%d.\n", |
rc); |
free(fs_info); |
ipc_answer_fast_0(callid, rc); |
ipc_answer_fast_0(rid, rc); |
ipc_answer_0(callid, rc); |
ipc_answer_0(rid, rc); |
return; |
} |
209,8 → 209,8 |
if (!vfs_info_sane(&fs_info->vfs_info)) { |
free(fs_info); |
ipc_answer_fast_0(callid, EINVAL); |
ipc_answer_fast_0(rid, EINVAL); |
ipc_answer_0(callid, EINVAL); |
ipc_answer_0(rid, EINVAL); |
return; |
} |
226,8 → 226,8 |
dprintf("FS is already registered.\n"); |
futex_up(&fs_head_futex); |
free(fs_info); |
ipc_answer_fast_0(callid, EEXISTS); |
ipc_answer_fast_0(rid, EEXISTS); |
ipc_answer_0(callid, EEXISTS); |
ipc_answer_0(rid, EEXISTS); |
return; |
} |
248,12 → 248,12 |
list_remove(&fs_info->fs_link); |
futex_up(&fs_head_futex); |
free(fs_info); |
ipc_answer_fast_0(callid, EINVAL); |
ipc_answer_fast_0(rid, EINVAL); |
ipc_answer_0(callid, EINVAL); |
ipc_answer_0(rid, EINVAL); |
return; |
} |
fs_info->phone = IPC_GET_ARG3(call); |
ipc_answer_fast_0(callid, EOK); |
ipc_answer_0(callid, EOK); |
dprintf("Callback connection to FS created.\n"); |
267,8 → 267,8 |
futex_up(&fs_head_futex); |
ipc_hangup(fs_info->phone); |
free(fs_info); |
ipc_answer_fast_0(callid, EINVAL); |
ipc_answer_fast_0(rid, EINVAL); |
ipc_answer_0(callid, EINVAL); |
ipc_answer_0(rid, EINVAL); |
return; |
} |
282,8 → 282,8 |
futex_up(&fs_head_futex); |
ipc_hangup(fs_info->phone); |
free(fs_info); |
ipc_answer_fast_0(callid, EINVAL); |
ipc_answer_fast_0(rid, EINVAL); |
ipc_answer_0(callid, EINVAL); |
ipc_answer_0(rid, EINVAL); |
return; |
} |
290,7 → 290,7 |
/* |
* Commit to read-only sharing the PLB with the client. |
*/ |
ipc_answer_fast(callid, EOK, (ipcarg_t) plb, |
ipc_answer_2(callid, EOK, (ipcarg_t) plb, |
(ipcarg_t) (AS_AREA_READ | AS_AREA_CACHEABLE)); |
dprintf("Sharing PLB.\n"); |
301,7 → 301,7 |
* system a global file system handle. |
*/ |
fs_info->fs_handle = (int) atomic_postinc(&fs_handle_next); |
ipc_answer_fast_1(rid, EOK, (ipcarg_t) fs_info->fs_handle); |
ipc_answer_1(rid, EOK, (ipcarg_t) fs_info->fs_handle); |
futex_up(&fs_head_futex); |