Changeset 991f645 in mainline for uspace/srv/vfs
- Timestamp:
- 2010-11-18T17:39:28Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 0b5a4131
- Parents:
- 51a268f
- Location:
- uspace/srv/vfs
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/vfs/vfs.h
r51a268f r991f645 62 62 #define VFS_PAIR \ 63 63 fs_handle_t fs_handle; \ 64 dev _handle_t dev_handle;64 devmap_handle_t devmap_handle; 65 65 66 66 /** … … 68 68 * doesn't contain any state. For a stateful structure, see vfs_node_t. 69 69 * 70 * @note fs_handle, dev _handle and index are meant to be returned in one70 * @note fs_handle, devmap_handle and index are meant to be returned in one 71 71 * IPC reply. 72 72 */ … … 182 182 extern void vfs_node_put(vfs_node_t *); 183 183 extern void vfs_node_forget(vfs_node_t *); 184 extern unsigned vfs_nodes_refcount_sum_get(fs_handle_t, dev _handle_t);184 extern unsigned vfs_nodes_refcount_sum_get(fs_handle_t, devmap_handle_t); 185 185 186 186 -
uspace/srv/vfs/vfs_lookup.c
r51a268f r991f645 163 163 aid_t req = async_send_5(phone, VFS_OUT_LOOKUP, (ipcarg_t) first, 164 164 (ipcarg_t) (first + len - 1) % PLB_SIZE, 165 (ipcarg_t) root->dev _handle, (ipcarg_t) lflag, (ipcarg_t) index,165 (ipcarg_t) root->devmap_handle, (ipcarg_t) lflag, (ipcarg_t) index, 166 166 &answer); 167 167 … … 183 183 184 184 result->triplet.fs_handle = (fs_handle_t) rc; 185 result->triplet.dev _handle = (dev_handle_t) IPC_GET_ARG1(answer);185 result->triplet.devmap_handle = (devmap_handle_t) IPC_GET_ARG1(answer); 186 186 result->triplet.index = (fs_index_t) IPC_GET_ARG2(answer); 187 187 result->size = … … 210 210 ipc_call_t answer; 211 211 aid_t req = async_send_2(phone, VFS_OUT_OPEN_NODE, 212 (ipcarg_t) result->triplet.dev _handle,212 (ipcarg_t) result->triplet.devmap_handle, 213 213 (ipcarg_t) result->triplet.index, &answer); 214 214 -
uspace/srv/vfs/vfs_node.c
r51a268f r991f645 113 113 unsigned long key[] = { 114 114 [KEY_FS_HANDLE] = node->fs_handle, 115 [KEY_DEV_HANDLE] = node->dev _handle,115 [KEY_DEV_HANDLE] = node->devmap_handle, 116 116 [KEY_INDEX] = node->index 117 117 }; … … 131 131 ipcarg_t rc; 132 132 rc = async_req_2_0(phone, VFS_OUT_DESTROY, 133 (ipcarg_t)node->dev _handle, (ipcarg_t)node->index);133 (ipcarg_t)node->devmap_handle, (ipcarg_t)node->index); 134 134 assert(rc == EOK); 135 135 vfs_release_phone(node->fs_handle, phone); … … 151 151 unsigned long key[] = { 152 152 [KEY_FS_HANDLE] = node->fs_handle, 153 [KEY_DEV_HANDLE] = node->dev _handle,153 [KEY_DEV_HANDLE] = node->devmap_handle, 154 154 [KEY_INDEX] = node->index 155 155 }; … … 175 175 unsigned long key[] = { 176 176 [KEY_FS_HANDLE] = result->triplet.fs_handle, 177 [KEY_DEV_HANDLE] = result->triplet.dev _handle,177 [KEY_DEV_HANDLE] = result->triplet.devmap_handle, 178 178 [KEY_INDEX] = result->triplet.index 179 179 }; … … 191 191 memset(node, 0, sizeof(vfs_node_t)); 192 192 node->fs_handle = result->triplet.fs_handle; 193 node->dev _handle = result->triplet.dev_handle;193 node->devmap_handle = result->triplet.devmap_handle; 194 194 node->index = result->triplet.index; 195 195 node->size = result->size; … … 243 243 vfs_node_t *node = hash_table_get_instance(item, vfs_node_t, nh_link); 244 244 return (node->fs_handle == (fs_handle_t) key[KEY_FS_HANDLE]) && 245 (node->dev _handle == key[KEY_DEV_HANDLE]) &&245 (node->devmap_handle == key[KEY_DEV_HANDLE]) && 246 246 (node->index == key[KEY_INDEX]); 247 247 } … … 255 255 unsigned refcnt; 256 256 fs_handle_t fs_handle; 257 dev _handle_t dev_handle;257 devmap_handle_t devmap_handle; 258 258 }; 259 259 … … 264 264 265 265 if ((node->fs_handle == rd->fs_handle) && 266 (node->dev _handle == rd->dev_handle))266 (node->devmap_handle == rd->devmap_handle)) 267 267 rd->refcnt += node->refcnt; 268 268 } 269 269 270 270 unsigned 271 vfs_nodes_refcount_sum_get(fs_handle_t fs_handle, dev _handle_t dev_handle)271 vfs_nodes_refcount_sum_get(fs_handle_t fs_handle, devmap_handle_t devmap_handle) 272 272 { 273 273 struct refcnt_data rd = { 274 274 .refcnt = 0, 275 275 .fs_handle = fs_handle, 276 .dev _handle = dev_handle276 .devmap_handle = devmap_handle 277 277 }; 278 278 -
uspace/srv/vfs/vfs_ops.c
r51a268f r991f645 55 55 56 56 /* Forward declarations of static functions. */ 57 static int vfs_truncate_internal(fs_handle_t, dev _handle_t, fs_index_t, aoff64_t);57 static int vfs_truncate_internal(fs_handle_t, devmap_handle_t, fs_index_t, aoff64_t); 58 58 59 59 /** … … 65 65 vfs_pair_t rootfs = { 66 66 .fs_handle = 0, 67 .dev _handle = 067 .devmap_handle = 0 68 68 }; 69 69 70 static void vfs_mount_internal(ipc_callid_t rid, dev _handle_t dev_handle,70 static void vfs_mount_internal(ipc_callid_t rid, devmap_handle_t devmap_handle, 71 71 fs_handle_t fs_handle, char *mp, char *opts) 72 72 { … … 125 125 phone = vfs_grab_phone(fs_handle); 126 126 msg = async_send_1(phone, VFS_OUT_MOUNTED, 127 (ipcarg_t) dev _handle, &answer);127 (ipcarg_t) devmap_handle, &answer); 128 128 /* send the mount options */ 129 129 rc = async_data_write_start(phone, (void *)opts, … … 150 150 151 151 mr_res.triplet.fs_handle = fs_handle; 152 mr_res.triplet.dev _handle = dev_handle;152 mr_res.triplet.devmap_handle = devmap_handle; 153 153 mr_res.triplet.index = rindex; 154 154 mr_res.size = rsize; … … 157 157 158 158 rootfs.fs_handle = fs_handle; 159 rootfs.dev _handle = dev_handle;159 rootfs.devmap_handle = devmap_handle; 160 160 161 161 /* Add reference to the mounted root. */ … … 187 187 phone = vfs_grab_phone(mp_res.triplet.fs_handle); 188 188 msg = async_send_4(phone, VFS_OUT_MOUNT, 189 (ipcarg_t) mp_res.triplet.dev _handle,189 (ipcarg_t) mp_res.triplet.devmap_handle, 190 190 (ipcarg_t) mp_res.triplet.index, 191 191 (ipcarg_t) fs_handle, 192 (ipcarg_t) dev _handle, &answer);192 (ipcarg_t) devmap_handle, &answer); 193 193 194 194 /* send connection */ … … 229 229 230 230 mr_res.triplet.fs_handle = fs_handle; 231 mr_res.triplet.dev _handle = dev_handle;231 mr_res.triplet.devmap_handle = devmap_handle; 232 232 mr_res.triplet.index = rindex; 233 233 mr_res.size = rsize; … … 255 255 * in the request. 256 256 */ 257 dev _handle_t dev_handle = (dev_handle_t) IPC_GET_ARG1(*request);257 devmap_handle_t devmap_handle = (devmap_handle_t) IPC_GET_ARG1(*request); 258 258 259 259 /* … … 343 343 344 344 /* Do the mount */ 345 vfs_mount_internal(rid, dev _handle, fs_handle, mp, opts);345 vfs_mount_internal(rid, devmap_handle, fs_handle, mp, opts); 346 346 free(mp); 347 347 free(fs_name); … … 402 402 */ 403 403 if (vfs_nodes_refcount_sum_get(mr_node->fs_handle, 404 mr_node->dev _handle) != 2) {404 mr_node->devmap_handle) != 2) { 405 405 fibril_rwlock_write_unlock(&namespace_rwlock); 406 406 vfs_node_put(mr_node); … … 422 422 phone = vfs_grab_phone(mr_node->fs_handle); 423 423 rc = async_req_1_0(phone, VFS_OUT_UNMOUNTED, 424 mr_node->dev _handle);424 mr_node->devmap_handle); 425 425 vfs_release_phone(mr_node->fs_handle, phone); 426 426 if (rc != EOK) { … … 431 431 } 432 432 rootfs.fs_handle = 0; 433 rootfs.dev _handle = 0;433 rootfs.devmap_handle = 0; 434 434 } else { 435 435 … … 458 458 459 459 phone = vfs_grab_phone(mp_node->fs_handle); 460 rc = async_req_2_0(phone, VFS_OUT_UNMOUNT, mp_node->dev _handle,460 rc = async_req_2_0(phone, VFS_OUT_UNMOUNT, mp_node->devmap_handle, 461 461 mp_node->index); 462 462 vfs_release_phone(mp_node->fs_handle, phone); … … 569 569 if (node->size) { 570 570 rc = vfs_truncate_internal(node->fs_handle, 571 node->dev _handle, node->index, 0);571 node->devmap_handle, node->index, 0); 572 572 if (rc) { 573 573 fibril_rwlock_write_unlock(&node->contents_rwlock); … … 626 626 627 627 lr.triplet.fs_handle = IPC_GET_ARG1(*request); 628 lr.triplet.dev _handle = IPC_GET_ARG2(*request);628 lr.triplet.devmap_handle = IPC_GET_ARG2(*request); 629 629 lr.triplet.index = IPC_GET_ARG3(*request); 630 630 int oflag = IPC_GET_ARG4(*request); … … 647 647 if (node->size) { 648 648 rc = vfs_truncate_internal(node->fs_handle, 649 node->dev _handle, node->index, 0);649 node->devmap_handle, node->index, 0); 650 650 if (rc) { 651 651 fibril_rwlock_write_unlock(&node->contents_rwlock); … … 709 709 aid_t msg; 710 710 ipc_call_t answer; 711 msg = async_send_2(fs_phone, VFS_OUT_SYNC, file->node->dev _handle,711 msg = async_send_2(fs_phone, VFS_OUT_SYNC, file->node->devmap_handle, 712 712 file->node->index, &answer); 713 713 … … 740 740 aid_t msg; 741 741 ipc_call_t answer; 742 msg = async_send_2(fs_phone, VFS_OUT_CLOSE, file->node->dev _handle,742 msg = async_send_2(fs_phone, VFS_OUT_CLOSE, file->node->devmap_handle, 743 743 file->node->index, &answer); 744 744 … … 838 838 839 839 rc = async_data_read_forward_3_1(fs_phone, VFS_OUT_READ, 840 file->node->dev _handle, file->node->index, file->pos,840 file->node->devmap_handle, file->node->index, file->pos, 841 841 &answer); 842 842 } else { 843 843 rc = async_data_write_forward_3_1(fs_phone, VFS_OUT_WRITE, 844 file->node->dev _handle, file->node->index, file->pos,844 file->node->devmap_handle, file->node->index, file->pos, 845 845 &answer); 846 846 } … … 961 961 } 962 962 963 int vfs_truncate_internal(fs_handle_t fs_handle, dev _handle_t dev_handle,963 int vfs_truncate_internal(fs_handle_t fs_handle, devmap_handle_t devmap_handle, 964 964 fs_index_t index, aoff64_t size) 965 965 { … … 968 968 969 969 fs_phone = vfs_grab_phone(fs_handle); 970 rc = async_req_4_0(fs_phone, VFS_OUT_TRUNCATE, (ipcarg_t) dev _handle,970 rc = async_req_4_0(fs_phone, VFS_OUT_TRUNCATE, (ipcarg_t) devmap_handle, 971 971 (ipcarg_t) index, LOWER32(size), UPPER32(size)); 972 972 vfs_release_phone(fs_handle, fs_phone); … … 990 990 fibril_rwlock_write_lock(&file->node->contents_rwlock); 991 991 rc = vfs_truncate_internal(file->node->fs_handle, 992 file->node->dev _handle, file->node->index, size);992 file->node->devmap_handle, file->node->index, size); 993 993 if (rc == EOK) 994 994 file->node->size = size; … … 1022 1022 1023 1023 aid_t msg; 1024 msg = async_send_3(fs_phone, VFS_OUT_STAT, file->node->dev _handle,1024 msg = async_send_3(fs_phone, VFS_OUT_STAT, file->node->devmap_handle, 1025 1025 file->node->index, true, NULL); 1026 1026 ipc_forward_fast(callid, fs_phone, 0, 0, 0, IPC_FF_ROUTE_FROM_ME); … … 1071 1071 int fs_phone = vfs_grab_phone(node->fs_handle); 1072 1072 aid_t msg; 1073 msg = async_send_3(fs_phone, VFS_OUT_STAT, node->dev _handle,1073 msg = async_send_3(fs_phone, VFS_OUT_STAT, node->devmap_handle, 1074 1074 node->index, false, NULL); 1075 1075 ipc_forward_fast(callid, fs_phone, 0, 0, 0, IPC_FF_ROUTE_FROM_ME); … … 1245 1245 /* Check whether linking to the same file system instance. */ 1246 1246 if ((old_node->fs_handle != new_par_lr.triplet.fs_handle) || 1247 (old_node->dev _handle != new_par_lr.triplet.dev_handle)) {1247 (old_node->devmap_handle != new_par_lr.triplet.devmap_handle)) { 1248 1248 fibril_rwlock_write_unlock(&namespace_rwlock); 1249 1249 ipc_answer_0(rid, EXDEV); /* different file systems */
Note:
See TracChangeset
for help on using the changeset viewer.