summaryrefslogtreecommitdiffstats
path: root/cpukit/libfs/src/dosfs/fat_file.c (unfollow)
Commit message (Collapse)AuthorFilesLines
2021-07-16cpukit: occured -> occurredSebastian Huber1-10/+10
2021-03-26dosfs: Use peek supportChristian Mauderer1-5/+16
This speeds up reading fragmented files. Fix #3689
2020-04-28doxygen: Switch @brief and @ingroupSebastian Huber1-1/+2
This order change fixes the Latex documentation build via Doxygen.
2020-04-16Canonicalize config.h includeSebastian Huber1-1/+1
Use the following variant which was already used by most source files: #ifdef HAVE_CONFIG_H #include "config.h" #endif
2017-09-06dosfs: Fix fat_file_update()Sebastian Huber1-5/+3
Do not update the non-existant meta-data of the root directory. Update #2944.
2017-03-16dosfs: Simplify fat_file_open()Sebastian Huber1-3/+1
Update #2929.
2017-03-16dosfs: Fix fat_file_write()Sebastian Huber1-18/+5
Remove forced overwrite which leads to file data corruption. The logic to determine a forced overwrite was fundamentally broken. For simplity, disable this feature. Update #2622.
2014-10-23dosfs: Write meta-data only if it changedSebastian Huber1-12/+10
2014-10-23dosfs: Support ctime and mtimeSebastian Huber1-0/+34
Implement ctime and mtime updates according to POSIX. The ctime is mapped to the FAT create time and date. The mtime is mapped to the FAT last modified time and date. For the atime use the mtime for simplicity.
2013-08-21dosfs: Use unprotected chain operationsSebastian Huber1-2/+2
This area is protected by the FAT file system instance lock.
2013-02-20dosfs: Fix file length updateSebastian Huber1-2/+3
2013-02-15dosfs: Fix file extendSebastian Huber1-23/+24
Only append a valid cluster chain (cluster added > 0), otherwise we overwrite the root directory cluster (cluster 0) of a FAT12 or FAT16 with arbitrary data.
2013-01-30dosfs: Always release the buffersSebastian Huber1-22/+23
Release the buffers also if this is not the last reference to the file object since otherwise we may hold modified data indefinitely.
2012-12-20libfs: Doxygen Enhancement Task #6"Mathew Kallada1-4/+7
2012-12-05dosfs: Cluster write optimizationRalf Kirchner1-75/+156
Separate cluster write from sector write for quick file write. New test fstests/fsdosfswrite01.
2012-07-11dosfs: Use fs_info instead of mt_entrySebastian Huber1-73/+64
2012-06-04dosfs: Fix for no space left on device conditionSebastian Huber1-3/+5
The file size was wrong in the no space left on device condition. This resulted in turn in a read of an invalid block which lead to an EIO error status.
2012-05-11Remove All CVS Id Strings Possible Using a ScriptJoel Sherrill1-2/+0
Script does what is expected and tries to do it as smartly as possible. + remove occurrences of two blank comment lines next to each other after Id string line removed. + remove entire comment blocks which only exited to contain CVS Ids + If the processing left a blank line at the top of a file, it was removed.
2012-05-11dosfs: Remove fat_file_datasync()Sebastian Huber1-59/+0
The fat_file_datasync() read every cluster of the file into the cache and then synchronized it step-by-step. For unmodified buffers this is a non-operation. For modified buffers this will wake-up the swapout task which performs then a single buffer write operation. This is usually quite inefficient. Firstly we do single buffer writes, secondly we may perform a lot of unnecessary read operations (for huge files this is really bad), and thirdly this leads likely to cache evictions. The synchronization procedure is replaced by a simple rtems_bdbuf_sync_dev(). This has the side-effect that also buffers not related to the file are synchronized, but since the modified list is normally short this should be acceptable.
2012-05-11Filesystem: PR1893: Fix write and truncate handlerSebastian Huber1-7/+29
Space that grows due to truncate or write offsets beyond the current file size must be zero filled.
2012-03-13libblock: Change bdbuf APISebastian Huber1-1/+1
The functions o rtems_bdbuf_get(), o rtems_bdbuf_read(), o rtems_bdbuf_syncdev(), and o rtems_bdbuf_purge_dev(), use now the disk device instead of the device identifier. This makes bdbuf independent of rtems_disk_obtain() and rtems_disk_release(). It is the responsiblity of the file system to obtain the disk device. This also reduces the overhead to get a buffer. The key for the AVL tree uses now the disk device instead of the device identifier. The pointer is interpreted as an unsigned integer. This reduces the memory overhead and makes the comparison operation a bit faster. Removed function rtems_bdbuf_purge_major(). This function was too destructive and could have unpredictable side effects.
2011-07-212011-07-21 Joel Sherrill <joel.sherrill@oarcorp.com>Joel Sherrill1-2/+2
* libfs/src/dosfs/fat_file.c, libmisc/monitor/monitor.h, score/cpu/m68k/rtems/score/cpu.h: Remove stray spaces from unsigned32 to uint32_t conversion.
2010-11-252010-11-25 Sebastian Huber <sebastian.huber@embedded-brains.de>Sebastian Huber1-1/+1
* libfs/src/dosfs/fat_file.c, libfs/src/imfs/imfs_debug.c, libfs/src/imfs/imfs_directory.c, libfs/src/imfs/imfs_getchild.c, posix/src/killinfo.c, score/inline/rtems/score/schedulerpriority.inl, score/inline/rtems/score/watchdog.inl, score/src/apiext.c, score/src/chain.c, score/src/coremsgflushsupp.c, score/src/coremsginsert.c, score/src/objectshrinkinformation.c, score/src/schedulerpriorityyield.c, score/src/threadqdequeuepriority.c, score/src/threadqenqueuepriority.c, score/src/threadqextractpriority.c, score/src/threadqfirstfifo.c, score/src/threadqfirstpriority.c, score/src/threadyieldprocessor.c, score/src/userextthreadbegin.c, score/src/userextthreadcreate.c, score/src/userextthreaddelete.c, score/src/userextthreadrestart.c, score/src/userextthreadstart.c, score/src/userextthreadswitch.c, score/src/watchdogreportchain.c: Avoid chain API violations.
2010-08-232010-08-23 Joel Sherrill <joel.sherrill@oarcorp.com>Joel Sherrill1-1/+1
* libblock/src/flashdisk.c, libblock/src/nvdisk.c, libcsupport/src/ioctl.c, libfs/src/dosfs/fat_file.c: Add va_end().
2010-08-232010-08-23 Joel Sherrill <joel.sherrill@oarcorp.com>Joel Sherrill1-3/+7
CID 99 CID 100 CID 101 CID 102 * libfs/src/dosfs/fat_file.c, libfs/src/dosfs/msdos.h, libfs/src/dosfs/msdos_misc.c: Resolve invalid use of const identified by Coverity scanner.
2009-11-29Whitespace removal.Ralf Corsepius1-2/+2
2009-04-292009-04-29 Chris Johns <chrisj@rtems.org>Chris Johns1-22/+24
* libcsupport/include/rtems/libio.h: Add rtems_off64_t for internal use. Update the internal off_t to the 64bit offset. * libnetworking/lib/ftpfs.c, libnetworking/lib/tftpDriver.c, libfs/src/nfsclient/src/nfs.c, libfs/src/imfs/imfs_fifo.c, libfs/src/imfs/memfile.c, libfs/src/imfs/imfs_directory.c, libfs/src/imfs/imfs.h, libfs/src/imfs/deviceio.c: Change off_t to rtems_off64_t. * libmisc/shell/main_msdosfmt.c: Add an info level so the format code can tell the user what is happening. Add more options to control the format configuration. * libfs/src/dosfs/msdos_format.c: Add a print function to display the format progress and print statements. Select a better default cluster size depending on the size of the disk. This lowers the size of the FAT on large disks. Read and maintain the MRB partition information. * libfs/src/dosfs/dosfs.h, libfs/src/dosfs/fat.h, libfs/src/dosfs/fat_file.c, libfs/src/dosfs/fat_file.h, libfs/src/dosfs/msdos.h, libfs/src/dosfs/msdos_conv.c, libfs/src/dosfs/msdos_create.c, libfs/src/dosfs/msdos_file.c, libfs/src/dosfs/msdos_handlers_dir.c, libfs/src/dosfs/msdos_handlers_file.c, libfs/src/dosfs/msdos_init.c, libfs/src/dosfs/msdos_initsupp.c, libfs/src/dosfs/msdos_misc.c, libfs/src/dosfs/msdos_mknod.c: Add long file name support. Change off_t to rtems_off64_t.
2009-03-092009-03-09 Joel Sherrill <joel.sherrill@OARcorp.com>Joel Sherrill1-2/+2
PR 1376/filesystem * libcsupport/include/rtems/libio.h, libfs/src/dosfs/fat_file.c, libfs/src/dosfs/msdos.h, libfs/src/dosfs/msdos_dir.c, libfs/src/dosfs/msdos_file.c, libfs/src/imfs/deviceio.c, libfs/src/imfs/imfs.h, libfs/src/imfs/imfs_directory.c, libfs/src/imfs/imfs_fifo.c, libfs/src/imfs/memfile.c, libfs/src/nfsclient/src/nfs.c: lseek handlers should return off_t.
2008-07-292008-07-29 Chris Johns <chrisj@rtems.org>Chris Johns1-19/+19
* libblock/Makefile.am: Removed src/show_bdbuf.c. * libblock/src/show_bdbuf.c: Removed. * libblock/include/rtems/bdbuf.h, cpukit/libblock/src/bdbuf.c: Rewritten the bdbuf code. Remove pre-emption disable, score access, fixed many bugs and increased performance. * libblock/include/rtems/blkdev.h: Added RTEMS_BLKDEV_CAPABILITIES block device request. Cleaned up comments. Added block and user fields to the sg buffer request. Move to rtems_* namespace. * libblock/include/rtems/diskdevs.h, cpukit/libblock/src/diskdevs.c: Move to rtems_* namespace. Add a capabilities field for drivers. Change rtems_disk_lookup to rtems_disk_obtain to match the release call. You do not lookup and release a disk, you obtain and release a disk. * libblock/include/rtems/ide_part_table.h, libblock/include/rtems/ramdisk.h, libblock/src/ide_part_table.c: Move to rtems_* namespace. * libblock/include/rtems/nvdisk.h: Formatting change. * libblock/src/blkdev.c: Move to rtems_* namespace. Change rtems_disk_lookup to rtems_disk_obtain * libblock/src/flashdisk.c: Move to rtems_* namespace. Use the new support for the block number in the scatter/grather request struct. This allows non-continuous buffer requests for those drivers that can support increasing performance. * libblock/src/nvdisk.c: Move to rtems_* namespace. Removed warnings. Added better error checking. Fixed some comments. * libblock/src/ramdisk.c: Move to rtems_* namespace. Added some trace functions to help debugging upper layers. Use the new support for the block number in the scatter/grather request struct. This allows non-continuous buffer requests for those drivers that can support increasing performance. * libfs/src/dosfs/fat.c, libfs/src/dosfs/fat.h: Use new chains API. Removed temporary hack and changed set_errno_and_return_minus_one to rtems_set_errno_and_return_minus_one. Move fat_buf_access from header and stopped it being inlined. Updated to libblock changes. * libfs/src/dosfs/fat_fat_operations.c, libfs/src/dosfs/fat_file.c, libfs/src/dosfs/msdos_create.c, libfs/src/dosfs/msdos_dir.c, libfs/src/dosfs/msdos_eval.c, libfs/src/dosfs/msdos_file.c, libfs/src/dosfs/msdos_format.c, libfs/src/dosfs/msdos_free.c, libfs/src/dosfs/msdos_initsupp.c, libfs/src/dosfs/msdos_misc.c, libfs/src/dosfs/msdos_mknod.c: Use new chains API. Removed temporary hack and changed set_errno_and_return_minus_one to rtems_set_errno_and_return_minus_one. Updated to libblock changes. * libmisc/Makefile.am: Add new ls and rm command files. * libmisc/shell/cmp-ls.c, libmisc/shell/extern-ls.h, libmisc/shell/filemode.c, libmisc/shell/print-ls.c, libmisc/shell/pwcache.c, libmisc/shell/utils-ls.c, libmisc/shell/vis.c, shell/vis.h: New. * libmisc/shell/extern-cp.h, libmisc/shell/main_cp.c, libmisc/shell/utils-cp.c: Fixed the usage call bug. * libmisc/shell/main_blksync.c: Updated to the new block IO ioctl command. * libmisc/shell/main_ls.c, libmisc/shell/main_rm.c: Updated to BSD commands with more features. * score/src/coremutex.c: Fix the strick order mutex code. * libmisc/shell/shell.c: Change shell tasks mode to be timeslice and no ASR. * sapi/include/confdefs.h: Change ata_driver_task_priority to rtems_ata_driver_task_priority. Add the new BD buf cache parameters with defaults. * score/src/interr.c: Do not return if the CPU halt call returns.
2005-05-062005-05-06 Joel Sherrill <joel@OARcorp.com>Joel Sherrill1-3/+3
* libblock/src/blkdev.c, libfs/src/dosfs/fat_file.c, libfs/src/dosfs/fat_file.h, libfs/src/dosfs/msdos.h, libfs/src/dosfs/msdos_create.c, libfs/src/dosfs/msdos_dir.c, libfs/src/dosfs/msdos_initsupp.c, libfs/src/dosfs/msdos_misc.c: Removed warnings.
2005-01-19Cosmetics.Ralf Corsepius1-1/+1
2004-04-17Remove stray white spaces.Ralf Corsepius1-196/+196
2004-03-222004-03-22 Ralf Corsepius <ralf_corsepius@rtems.org>Ralf Corsepius1-68/+68
* libfs/src/dosfs/fat.c, libfs/src/dosfs/fat.h, libfs/src/dosfs/fat_fat_operations.c, libfs/src/dosfs/fat_fat_operations.h, libfs/src/dosfs/fat_file.c, libfs/src/dosfs/fat_file.h, libfs/src/dosfs/msdos.h, libfs/src/dosfs/msdos_create.c, libfs/src/dosfs/msdos_dir.c, libfs/src/dosfs/msdos_file.c, libfs/src/dosfs/msdos_initsupp.c, libfs/src/dosfs/msdos_misc.c, libfs/src/imfs/deviceio.c, libfs/src/imfs/imfs.h, libfs/src/imfs/imfs_directory.c, libfs/src/imfs/imfs_fchmod.c, libfs/src/imfs/linearfile.c, libfs/src/imfs/memfile.c: Convert to using c99 fixed-size types.
2003-09-262003-09-26 Joel Sherrill <joel@OARcorp.com>Joel Sherrill1-2/+2
PR 492/filesystem * src/dosfs/fat_file.c: Fix inconsistent types in va_args call.
2003-09-092003-09-09 Ralf Corsepius <ralf_corsepius@rtems.com>Joel Sherrill1-4/+4
PR 487/filesystem * src/dosfs/fat_file.c: Correct typing per gcc 3.3 warnings.
2003-08-052003-08-05 Thomas Doerfler <Thomas.Doerfler@imd-systems.de>Jennifer Averett1-0/+5
PR 439/filesystem *src/dosfs/fat_file.c: flush temporary buffer when closing files
2003-07-082003-07-08 Ralf Corsepius <corsepiu@faw.uni-ulm.de>Ralf Corsepius1-0/+4
* src/dosfs/fat.c: include config-header "config.h". * src/dosfs/fat_fat_operations.c: Ditto. * src/dosfs/fat_file.c: Ditto. * src/dosfs/msdos_conv.c: Ditto.
2003-03-252003-03-25 Thomas Doerfler <Thomas.Doerfler@imd-systems.de>Joel Sherrill1-2/+2
PR 367/filesystem * src/dosfs/Makefile.am, src/dosfs/fat.c, src/dosfs/fat.h, src/dosfs/fat_fat_operations.c, src/dosfs/fat_file.c, src/dosfs/msdos.h, src/dosfs/msdos_dir.c: Some bugs were still present in the DOSFS implementation: - FAT12 did not work properly on Big-Endian machines - Some synchronization and error handling problems were present - Some legal codings for EOC were not recognized
2002-03-282002-03-27 Ralf Corsepius <corsepiu@faw.uni-ulm.de>Joel Sherrill1-3/+2
* src/dosfs/fat_file.c: Remove bsp.h. fat_file_write(.. const char*buf ..). * src/dosfs/fat_file.h: fat_file_write(.. const char*buf ..).
2002-02-282002-02-28 Victor V. Vengerov <vvv@oktet.ru>Joel Sherrill1-0/+979
* DOS filesystem including FAT12, FAT16, and FAT32 support submitted. * src/dosfs, src/dosfs/Makefile.am, src/dosfs/stamp-h2.in, src/dosfs/config.h.in, src/dosfs/dosfs.h, src/dosfs/fat.c, src/dosfs/fat.h, src/dosfs/fat_fat_operations.c, src/dosfs/fat_fat_operations.h, src/dosfs/fat_file.c, src/dosfs/fat_file.h, src/dosfs/msdos.h, src/dosfs/msdos_create.c, src/dosfs/msdos_dir.c, src/dosfs/msdos_eval.c, src/dosfs/msdos_file.c, src/dosfs/msdos_free.c, src/dosfs/msdos_fsunmount.c, src/dosfs/msdos_handlers_dir.c, src/dosfs/msdos_handlers_file.c, src/dosfs/msdos_init.c, src/dosfs/msdos_initsupp.c, src/dosfs/msdos_misc.c, src/dosfs/msdos_mknod.c, src/dosfs/msdos_node_type.c, src/dosfs/.cvsignore: New files. * configure.ac, src/Makefile.am, wrapup/Makefile.am: Modified to reflect addition.