Lines Matching refs:fs

37 #include "fs/file.h"
38 #include "fs/fs.h"
39 #include "fs/dirent_fs.h"
40 #include "fs/mount.h"
179 static bool fatfs_is_last_cluster(FATFS *fs, DWORD cclust)
181 switch (fs->fs_type) {
192 static int fatfs_sync(unsigned long mountflags, FATFS *fs)
197 part = get_part((INT)fs->pdrv);
259 static FRESULT init_cluster(DIR_FILE *pdfp, DIR *dp_new, FATFS *fs, int type, const char *target, DWORD *clust)
276 result = sync_window(fs); /* Flush FAT */
284 dir = fs->win;
286 dir = PARENTFS(fs)->win;
289 sect = clst2sect(fs, *clust);
290 mem_set(dir, 0, SS(fs));
293 (void)strcpy_s((char *)dir, SS(fs), target);
296 mem_set(dir, 0, SS(fs));
301 st_clust(fs, dir, *clust);
305 if (fs->fs_type == FS_FAT32 && pclust == fs->dirbase) {
308 st_clust(fs, dir + DIR_SIZE, pclust);
312 fs->winsect = sect++;
313 fs->wflag = 1;
315 PARENTFS(fs)->winsect = sect++;
316 PARENTFS(fs)->wflag = 1;
318 result = sync_window(fs);
326 mem_set(dir, 0, SS(fs));
327 for (n = fs->csize - 1; n > 0; n--) {
329 fs->winsect = sect++;
330 fs->wflag = 1;
332 PARENTFS(fs)->winsect = sect++;
333 PARENTFS(fs)->wflag = 1;
335 result = sync_window(fs);
350 FATFS *fs = (FATFS *)parent->originMount->data;
373 ret = lock_fs(fs);
387 dp_new->obj.fs = fs;
391 INIT_NAMBUF(fs);
405 result = init_cluster(dfp, dp_new, fs, type, target, &clust);
429 st_clust(fs, dp_new->dir, clust);
437 PARENTFS(fs)->wflag = 1;
439 fs->wflag = 1;
441 result = sync_fs(fs);
456 finfo_new->fsize = fs->csize * SS(fs);
469 vp->uid = fs->fs_uid;
470 vp->gid = fs->fs_gid;
471 vp->mode = fatfs_get_mode(finfo_new->fattrib, fs->fs_mode);
482 unlock_fs(fs, FR_OK);
484 return fatfs_sync(parent->originMount->mountFlags, fs);
489 unlock_fs(fs, result);
500 FATFS *fs = (FATFS *)(parent->originMount->data);
514 ret = lock_fs(fs);
522 dp->obj.fs = fs;
526 INIT_NAMBUF(fs);
561 vp->uid = fs->fs_uid;
562 vp->gid = fs->fs_gid;
563 vp->mode = fatfs_get_mode(finfo->fattrib, fs->fs_mode);
566 finfo->fsize = fs->csize * SS(fs);
581 unlock_fs(fs, FR_OK);
587 unlock_fs(fs, result);
603 FATFS *fs = (FATFS *)vp->originMount->data;
610 fp = (FIL *)zalloc(sizeof(FIL) + SS(fs));
615 ret = lock_fs(fs);
628 fp->obj.fs = fs;
629 fp->obj.id = fs->id;
636 unlock_fs(fs, FR_OK);
650 FATFS *fs = fp->obj.fs;
654 ret = lock_fs(fs);
663 ret = fatfs_sync(filep->f_vnode->originMount->mountFlags, fs);
665 unlock_fs(fs, FR_OK);
673 unlock_fs(fs, result);
680 FATFS *fs = fp->obj.fs;
687 ret = lock_fs(fs);
699 unlock_fs(fs, result);
705 FATFS *fs = dp->obj.fs;
710 result = move_window(fs, dp->sect);
714 dbuff = fs->win + dp->dptr % SS(fs);
716 st_clust(fs, dbuff, finfo->sclst); /* Update start cluster */
726 fs->wflag = 1;
728 PARENTFS(fs)->wflag = 1;
730 return sync_fs(fs);
736 FATFS *fs = fp->obj.fs;
774 ret = lock_fs(fs);
805 unlock_fs(fs, FR_OK);
808 unlock_fs(fs, result);
820 FATFS *fs = wfp->obj.fs;
829 if (disk_read(fs->pdrv, entry->buf, entry->sect, 1) != RES_OK) {
841 FATFS *fs = fp->obj.fs;
848 ret = lock_fs(fs);
869 unlock_fs(fs, FR_OK);
872 unlock_fs(fs, result);
879 FATFS *fs = fp->obj.fs;
883 ret = lock_fs(fs);
889 unlock_fs(fs, result);
896 FATFS *fs = fp->obj.fs;
915 ret = lock_fs(fs);
926 unlock_fs(fs, result);
933 FATFS *fs = obj->fs;
952 csize = SS(fs) * fs->csize;
980 if (!fatfs_is_last_cluster(obj->fs, cclust)) { /* Remove extra cluster if existing */
997 FATFS *fs = (FATFS *)vp->originMount->data;
1009 ret = lock_fs(fs);
1015 unlock_fs(fs, FR_OK);
1019 object.fs = fs;
1030 unlock_fs(fs, FR_OK);
1031 return fatfs_sync(vp->originMount->mountFlags, fs);
1033 unlock_fs(fs, result);
1086 FATFS *fs = NULL;
1106 fs = (FATFS *)zalloc(sizeof(FATFS));
1107 if (fs == NULL) {
1113 fs->vir_flag = FS_PARENT;
1114 fs->parent_fs = fs;
1115 fs->vir_amount = DISK_ERROR;
1116 fs->vir_avail = FS_VIRDISABLE;
1119 ret = ff_cre_syncobj(0, &fs->sobj);
1125 ret = lock_fs(fs);
1131 fs->fs_type = 0;
1132 fs->pdrv = part->part_id;
1135 if (disk_ioctl(fs->pdrv, GET_SECTOR_SIZE, &(fs->ssize)) != RES_OK) {
1139 if (fs->ssize > FF_MAX_SS || fs->ssize < FF_MIN_SS || (fs->ssize & (fs->ssize - 1))) {
1145 fs->win = (BYTE *)ff_memalloc(SS(fs));
1146 if (fs->win == NULL) {
1151 result = find_fat_partition(fs, part, &fmt, &start_sector);
1157 result = init_fatobj(fs, fmt, start_sector);
1163 fs->fs_uid = mnt->vnodeBeCovered->uid;
1164 fs->fs_gid = mnt->vnodeBeCovered->gid;
1165 fs->fs_dmask = GetUmask();
1166 fs->fs_fmask = GetUmask();
1167 fs->fs_mode = mnt->vnodeBeCovered->mode & (S_IRWXU | S_IRWXG | S_IRWXO);
1175 dfp->f_dir.obj.fs = fs;
1184 dfp->fno.fsize = fs->csize * SS(fs);
1195 mnt->data = fs;
1202 vp->uid = fs->fs_uid;
1203 vp->gid = fs->fs_gid;
1213 unlock_fs(fs, FR_OK);
1218 ff_memfree(fs->win);
1220 unlock_fs(fs, FR_OK);
1222 ff_del_syncobj(&fs->sobj);
1224 free(fs);
1237 FATFS *fs = (FATFS *)mnt->data;
1241 ret = lock_fs(fs);
1246 part = get_part(fs->pdrv);
1248 unlock_fs(fs, FR_OK);
1253 unlock_fs(fs, FR_OK);
1259 unlock_fs(fs, FR_DISK_ERR);
1270 unlock_fs(fs, FR_OK);
1279 if (fs->win != NULL) {
1280 ff_memfree(fs->win);
1283 unlock_fs(fs, FR_OK);
1285 ret = ff_del_syncobj(&fs->sobj);
1289 free(fs);
1321 FATFS *fs = (FATFS *)mnt->data;
1328 info->f_bsize = fs->ssize * fs->csize;
1330 info->f_bsize = FF_MIN_SS * fs->csize;
1332 info->f_blocks = fs->n_fatent;
1333 ret = lock_fs(fs);
1338 if (fs->free_clst == DISK_ERROR) {
1339 result = fat_count_free_entries(&nclst, fs);
1341 info->f_bfree = fs->free_clst;
1342 info->f_bavail = fs->free_clst;
1343 unlock_fs(fs, result);
1354 info->f_frsize = SS(fs) * fs->csize;
1421 FATFS *fs = (FATFS *)vp->originMount->data;
1427 ret = lock_fs(fs);
1432 sp->st_dev = fs->pdrv;
1435 sp->st_uid = fs->fs_uid;
1436 sp->st_gid = fs->fs_gid;
1438 sp->st_blksize = fs->csize * SS(fs);
1440 sp->st_blocks = finfo->fsize ? ((finfo->fsize - 1) / SS(fs) / fs->csize + 1) : 0;
1442 sp->st_blocks = fs->csize;
1450 unlock_fs(fs, FR_OK);
1476 FATFS *fs = (FATFS *)vp->originMount->data;
1489 ret = lock_fs(fs);
1495 result = move_window(fs, dp->sect);
1505 fs->wflag = 1;
1509 fs->wflag = 1;
1511 vp->mode = fatfs_get_mode(finfo->fattrib, fs->fs_mode);
1521 result = sync_window(fs);
1526 unlock_fs(fs, FR_OK);
1527 return fatfs_sync(vp->originMount->mountFlags, fs);
1529 unlock_fs(fs, result);
1536 FATFS *fs = vp->originMount->data;
1549 ret = lock_fs(fs);
1554 dp->obj.fs = fs;
1560 unlock_fs(fs, result);
1563 unlock_fs(fs, result);
1571 FATFS *fs = vp->originMount->data;
1578 ret = lock_fs(fs);
1579 if (ret == FALSE) { /* Lock fs failed */
1583 INIT_NAMBUF(fs);
1616 unlock_fs(fs, FR_OK);
1620 unlock_fs(fs, result);
1628 FATFS *fs = dp->obj.fs;
1632 ret = lock_fs(fs);
1638 unlock_fs(fs, result);
1662 dir_sub.obj.fs = dp_old->obj.fs;
1680 FATFS *fs = (FATFS *)(old_vnode->originMount->data);
1691 ret = lock_fs(fs);
1692 if (ret == FALSE) { /* Lock fs failed */
1705 dp_new->obj.fs = fs;
1709 INIT_NAMBUF(fs);
1763 unlock_fs(fs, FR_OK);
1765 return fatfs_sync(old_vnode->originMount->mountFlags, fs);
1770 unlock_fs(fs, result);
1830 FATFS fs;
1834 fs.vir_flag = FS_PARENT;
1835 fs.parent_fs = &fs;
1836 fs.vir_amount = DISK_ERROR;
1837 fs.vir_avail = FS_VIRDISABLE;
1839 if (disk_ioctl(fs.pdrv, GET_SECTOR_SIZE, &(fs.ssize)) != RES_OK) {
1842 fs.win = (BYTE *)ff_memalloc(fs.ssize);
1843 if (fs.win == NULL) {
1847 result = find_fat_partition(&fs, part, &fmt, &start_sector);
1849 free(fs.win);
1853 result = init_fatobj(&fs, fmt, start_sector);
1855 free(fs.win);
1859 result = set_volumn_label(&fs, FatLabel);
1860 free(fs.win);
1928 FATFS *fs = (FATFS *)vp->originMount->data;
1942 INIT_NAMBUF(fs);
1944 ret = lock_fs(fs);
1949 dir_sub.obj.fs = fs;
1970 unlock_fs(fs, FR_OK);
1972 return fatfs_sync(vp->originMount->mountFlags, fs);
1975 unlock_fs(fs, result);
1990 FATFS *fs = (FATFS *)vp->originMount->data;
2001 ret = lock_fs(fs);
2016 result = sync_fs(fs);
2020 unlock_fs(fs, FR_OK);
2021 return fatfs_sync(vp->originMount->mountFlags, fs);
2024 unlock_fs(fs, result);
2104 FATFS *fs = (FATFS *)vp->originMount->data;
2113 if (fs->fs_type != FS_FAT32) {
2126 ret = lock_fs(fs);
2133 dp->obj.id = fs->id;
2139 unlock_fs(fs, FR_OK);
2147 part = get_part((INT)fs->pdrv);
2156 unlock_fs(fs, result);
2175 FATFS *fs = dp->obj.fs;
2180 ret = lock_fs(fs);
2186 sect = clst2sect(fs, clust); /* Get current sector */
2192 if (move_window(fs, sect) != FR_OK) {
2198 ret = LOS_CopyFromKernel(buffer, bufLen, fs->win, cnt);
2205 unlock_fs(fs, FR_OK);
2209 unlock_fs(fs, res);
2215 FATFS *fs = (FATFS *)(vnode->originMount->data);
2230 ret = lock_fs(fs);
2254 n = pos / SS(fs) / fs->csize - position / SS(fs) / fs->csize;
2264 sect = clst2sect(fs, clust);
2265 sect += (pos / SS(fs)) & (fs->csize - 1);
2268 if (fs->csize < buflen / SS(fs)) {
2269 step = fs->csize;
2271 step = buflen / SS(fs);
2276 while (n < buflen / SS(fs)) {
2277 if (disk_read(fs->pdrv, buf, sect, step) != RES_OK) {
2282 if (n >= buflen / SS(fs)) {
2291 } else if (fatfs_is_last_cluster(fs, clust)) {
2294 sect = clst2sect(fs, clust);
2295 buf += step * SS(fs);
2301 unlock_fs(fs, FR_OK);
2303 return (ssize_t)min(finfo->fsize - pos, n * SS(fs));
2306 unlock_fs(fs, result);
2313 FATFS *fs = (FATFS *)(vnode->originMount->data);
2328 ret = lock_fs(fs);
2352 n = pos / SS(fs) / fs->csize - position / SS(fs) / fs->csize;
2362 sect = clst2sect(fs, clust);
2363 sect += (pos / SS(fs)) & (fs->csize - 1);
2366 if (fs->csize < buflen / SS(fs)) {
2367 step = fs->csize;
2369 step = buflen / SS(fs);
2374 while (n < buflen / SS(fs)) {
2375 if (disk_write(fs->pdrv, buf, sect, step) != RES_OK) {
2380 if (n >= buflen / SS(fs)) {
2389 } else if (fatfs_is_last_cluster(fs, clust)) {
2392 sect = clst2sect(fs, clust);
2393 buf += step * SS(fs);
2399 fil.obj.fs = fs;
2405 unlock_fs(fs, FR_OK);
2407 return (ssize_t)min(finfo->fsize - pos, n * SS(fs));
2409 unlock_fs(fs, result);