Changeset 54caa41b in mainline
- Timestamp:
- 2011-03-24T21:30:52Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 41202a9
- Parents:
- cfbcd86
- Location:
- uspace/srv/fs/minixfs
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified uspace/srv/fs/minixfs/Makefile ¶
rcfbcd86 r54caa41b 38 38 mfs_inode.c \ 39 39 mfs_read.c \ 40 mfs_dentry.c \ 40 41 mfs_utils.c 41 42 -
TabularUnified uspace/srv/fs/minixfs/mfs.c ¶
rcfbcd86 r54caa41b 107 107 mfs_stat(callid, &call); 108 108 break; 109 case VFS_OUT_LOOKUP: 110 mfs_lookup(callid, &call); 111 break; 109 112 default: 110 113 async_answer_0(callid, ENOTSUP); -
TabularUnified uspace/srv/fs/minixfs/mfs.h ¶
rcfbcd86 r54caa41b 96 96 /*Block numbers for indirect zones*/ 97 97 uint32_t i_izone[V2_NR_INDIRECT_ZONES]; 98 99 bool dirty; 100 }; 101 102 /*Generic MFS directory entry*/ 103 struct mfs_dentry_info { 104 uint32_t d_inum; 105 char d_name[MFS3_MAX_NAME_LEN]; 106 107 bool dirty; 98 108 }; 99 109 … … 113 123 extern void mfs_mounted(ipc_callid_t rid, ipc_call_t *request); 114 124 extern void mfs_mount(ipc_callid_t rid, ipc_call_t *request); 125 extern void mfs_lookup(ipc_callid_t rid, ipc_call_t *request); 115 126 extern aoff64_t mfs_size_get(fs_node_t *node); 116 127 extern bool mfs_is_directory(fs_node_t *fsnode); 117 128 extern bool mfs_is_file(fs_node_t *fsnode); 118 129 extern char mfs_plb_get_char(unsigned pos); 130 extern int mfs_has_children(bool *has_children, fs_node_t *fsnode); 119 131 extern int mfs_root_get(fs_node_t **rfn, devmap_handle_t handle); 120 132 extern devmap_handle_t mfs_device_get(fs_node_t *fsnode); … … 138 150 int read_map(uint32_t *b, const struct mfs_node *mnode, const uint32_t pos); 139 151 152 /*mfs_dentry.c*/ 153 extern struct mfs_dentry_info * 154 read_directory_entry(struct mfs_node *mnode, unsigned index); 155 140 156 #endif 141 157 -
TabularUnified uspace/srv/fs/minixfs/mfs_inode.c ¶
rcfbcd86 r54caa41b 79 79 80 80 block_put(b); 81 free(ino); 82 ino_i->dirty = false; 81 83 82 free(ino);83 84 return ino_i; 84 85 … … 137 138 138 139 block_put(b); 140 free(ino); 141 ino_i->dirty = false; 139 142 140 free(ino);141 143 return ino_i; 142 144 -
TabularUnified uspace/srv/fs/minixfs/mfs_ops.c ¶
rcfbcd86 r54caa41b 54 54 .is_file = mfs_is_file, 55 55 .node_get = mfs_node_get, 56 .plb_get_char = mfs_plb_get_char 56 .plb_get_char = mfs_plb_get_char, 57 .has_children = mfs_has_children 57 58 }; 58 59 … … 312 313 } 313 314 315 void mfs_lookup(ipc_callid_t rid, ipc_call_t *request) 316 { 317 libfs_lookup(&mfs_libfs_ops, mfs_reg.fs_handle, rid, request); 318 } 319 314 320 char mfs_plb_get_char(unsigned pos) 315 321 { 316 322 return mfs_reg.plb_ro[pos % PLB_SIZE]; 323 } 324 325 int mfs_has_children(bool *has_children, fs_node_t *fsnode) 326 { 327 struct mfs_node *mnode = fsnode->data; 328 const struct mfs_ino_info *ino_i = mnode->ino_i; 329 const struct mfs_instance *inst = mnode->instance; 330 const struct mfs_sb_info *sbi = inst->sbi; 331 int i; 332 333 *has_children = false; 334 335 if (!S_ISDIR(mnode->ino_i->i_mode)) 336 goto out; 337 338 struct mfs_dentry_info *d_info; 339 340 for (i = 2; i < ino_i->i_size / sbi->dirsize; ++i) { 341 d_info = read_directory_entry(mnode, i); 342 343 if (!d_info) 344 goto out; 345 346 if (d_info->d_inum) { 347 *has_children = true; 348 free(d_info); 349 break; 350 } 351 352 free(d_info); 353 } 354 355 if (*has_children) 356 mfsdebug("Has children\n"); 357 else 358 mfsdebug("Has not children\n"); 359 360 out: 361 return EOK; 317 362 } 318 363
Note:
See TracChangeset
for help on using the changeset viewer.