/**@brief Mount point descrpitor.*/\r
struct ext4_mountpoint {\r
\r
- /**@brief Mount point name (@ref ext4_mount)*/\r
+ /**@brief Mount point name (@ref ext4_mount)*/\r
const char *name;\r
\r
- /**@brief Os dependent lock/unlock functions.*/\r
+ /**@brief Os dependent lock/unlock functions.*/\r
struct ext4_lock *os_locks;\r
\r
- /**@brief Ext4 filesystem internals.*/\r
+ /**@brief Ext4 filesystem internals.*/\r
struct ext4_fs fs;\r
\r
- /**@brief Dynamic alocation cache flag.*/\r
+ /**@brief Dynamic alocation cache flag.*/\r
bool cache_dynamic;\r
};\r
\r
/**@brief Block devices descriptor.*/\r
-struct _ext4_devices {\r
+struct _ext4_devices {\r
\r
/**@brief Block device name (@ref ext4_device_register)*/\r
const char *name;\r
struct ext4_bcache *bc;\r
};\r
\r
-/**@brief Block devices.*/\r
-struct _ext4_devices _bdevices[CONFIG_EXT4_BLOCKDEVS_COUNT];\r
+/**@brief Block devices.*/\r
+struct _ext4_devices _bdevices[CONFIG_EXT4_BLOCKDEVS_COUNT];\r
\r
\r
-/**@brief Mountpoints.*/\r
+/**@brief Mountpoints.*/\r
struct ext4_mountpoint _mp[CONFIG_EXT4_MOUNTPOINTS_COUNT];\r
\r
\r
for (i = 0; i < CONFIG_EXT4_BLOCKDEVS_COUNT; ++i) {\r
if(!_bdevices[i].name){\r
_bdevices[i].name = dev_name;\r
- _bdevices[i].bd = bd;\r
- _bdevices[i].bc = bc;\r
+ _bdevices[i].bd = bd;\r
+ _bdevices[i].bc = bc;\r
return EOK;\r
}\r
}\r
}\r
\r
\r
-int ext4_umount(char *mount_point)\r
+int ext4_umount(char *mount_point)\r
{\r
- int i;\r
- int r = EOK;\r
- struct ext4_mountpoint *mp = 0;\r
+ int i;\r
+ int r = EOK;\r
+ struct ext4_mountpoint *mp = 0;\r
\r
for (i = 0; i < CONFIG_EXT4_MOUNTPOINTS_COUNT; ++i) {\r
if(_mp[i].name){\r
}\r
\r
if(!strcmp(flags, "a") || !strcmp(flags, "ab")){\r
- *file_flags = O_WRONLY | O_CREAT | O_APPEND ;\r
+ *file_flags = O_WRONLY | O_CREAT | O_APPEND;\r
return true;\r
}\r
\r
{\r
struct ext4_mountpoint *mp = ext4_get_mount(path);\r
struct ext4_directory_search_result result;\r
- struct ext4_inode_ref ref;\r
- bool is_goal = false;\r
- uint8_t inode_type = EXT4_DIRECTORY_FILETYPE_DIR;\r
- int r = ENOENT;\r
+ struct ext4_inode_ref ref;\r
+ bool is_goal = false;\r
+ uint8_t inode_type = EXT4_DIRECTORY_FILETYPE_DIR;\r
+ int r = ENOENT;\r
uint32_t next_inode;\r
\r
f->mp = 0;\r
break;\r
\r
/*O_CREAT allows create new entry*/\r
- struct ext4_inode_ref child_ref;\r
+ struct ext4_inode_ref child_ref;\r
r = ext4_fs_alloc_inode(&mp->fs, &child_ref, is_goal ? !file_expect : true);\r
if(r != EOK)\r
break;\r
uint32_t fblock_start;\r
uint32_t fblock_cnt;\r
struct ext4_block b;\r
- uint8_t *u8_buf = buf;\r
+ uint8_t *u8_buf = buf;\r
struct ext4_inode_ref ref;\r
uint32_t sblock;\r
uint32_t sblock_end;\r
\r
block_size = ext4_sb_get_block_size(&f->mp->fs.sb);\r
size = size > (f->fsize - f->fpos) ? (f->fsize - f->fpos) : size;\r
- sblock = (f->fpos) / block_size;\r
+ sblock = (f->fpos) / block_size;\r
sblock_end = (f->fpos + size) / block_size;\r
u = (f->fpos) % block_size;\r
\r
return r;\r
}\r
\r
-int ext4_fwrite(ext4_file *f, void *buf, uint32_t size, uint32_t *wcnt)\r
+int ext4_fwrite(ext4_file *f, void *buf, uint32_t size, uint32_t *wcnt)\r
{\r
int r = EOK;\r
uint32_t u;\r
uint32_t fblock;\r
struct ext4_block b;\r
- uint8_t *u8_buf = buf;\r
+ uint8_t *u8_buf = buf;\r
struct ext4_inode_ref ref;\r
uint32_t sblock;\r
uint32_t sblock_end;\r
if(f->fsize % block_size)\r
file_blocks++;\r
\r
- sblock = (f->fpos) / block_size;\r
+ sblock = (f->fpos) / block_size;\r
\r
u = (f->fpos) % block_size;\r
\r
\r
inode_current = f.inode;\r
dir_end = false;\r
+\r
+ ext4_block_delay_cache_flush(mp->fs.bdev, 1);\r
+\r
do {\r
/*Load directory node.*/\r
r = ext4_fs_get_inode_ref(&f.mp->fs, inode_current, ¤t);\r
\r
}while(depth);\r
\r
-\r
+ ext4_block_delay_cache_flush(mp->fs.bdev, 0);\r
EXT4_MP_UNLOCK(mp);\r
return r;\r
}\r