implicitfield
423e80d22f
Kernel/FATFS: Handle the "." and ".." entries correctly in remove_child
2024-11-20 20:47:46 -05:00
implicitfield
c74ee7d36a
Kernel/FATFS: Fill in first cluster metadata for new ".." entries
2024-11-20 20:47:46 -05:00
implicitfield
ce871de432
Kernel/FATFS: Abstract out SFN helpers and make them usable in userspace
2024-11-20 20:47:46 -05:00
implicitfield
dca1a755c2
Kernel/FATFS: Make lookups case-insensitive
2024-11-02 15:54:29 -04:00
implicitfield
a9083f9be7
Kernel/FATFS: Avoid creating LFN entries when an SFN will suffice
2024-11-02 15:54:29 -04:00
implicitfield
0ba7a03869
Kernel/FATFS: Implement the specced LFN -> SFN conversion algorithm
2024-11-02 15:54:29 -04:00
implicitfield
b8828c7629
Kernel/FATFS: Cap reads at the respective file size
2024-11-02 15:54:29 -04:00
implicitfield
c15b473c1a
Kernel/FATFS: Only read the requested blocks in read_bytes_locked()
...
This dramatically improves performance when working with large files,
since we no longer re-read the entire file for each read.
2024-04-21 15:34:33 +02:00
implicitfield
5bc87ad1a5
Kernel/FATFS: Free an inode's clusters upon removal
2024-04-21 15:34:33 +02:00
implicitfield
32692f032c
Kernel/FATFS: Keep the FSInfo sector's free cluster count in sync
2024-04-21 15:34:33 +02:00
implicitfield
bd76dd2dc2
Kernel/FATFS: Initialize special directory entries
2024-04-21 15:34:33 +02:00
implicitfield
66e1f8812f
Kernel/FATFS: Don't ignore special entries when traversing directories
2024-04-21 15:34:33 +02:00
Undefine
31174c43bf
Kernel/FATFS: Implement a hacky replace_child
...
This is not a proper implementation, but it's good enough to get
the write support fully working.
2024-04-21 15:34:33 +02:00
Undefine
511b298a1d
Kernel/FATFS: Implement remove_child
2024-04-21 15:34:33 +02:00
Undefine
3b39a2f71b
Kernel/FATFS: Implement add_child
2024-04-21 15:34:33 +02:00
Undefine
2952401c58
Kernel/FATFS: Implement create_child
...
This is a large commit because it implements a lot of stuff to make
add_child simpler to get working. This allows us to create new files
on a FAT partition.
2024-04-21 15:34:33 +02:00
Undefine
098518cc57
Kernel/FATFS: Implement file modification
...
This is the first part of write support, it allows for full file
modification, but no creating or removing files yet.
Co-Authored-By: implicitfield <114500360+implicitfield@users.noreply.github.com >
2024-04-21 15:34:33 +02:00
Undefine
fde7bd9190
Kernel/FATFS: Make the debug logs nicer
...
They now look the same way as the ones in Ext2FS inodes which are
quite nice for debugging.
2024-04-21 15:34:33 +02:00
Undefine
33f00a7efb
Kernel/FATFS: Cache the cluster list and don't cache the InodeMetadata
...
Caching the cluster list allows us to fill the two fields in the
InodeMetadata. While at it, don't cache the metadata as when we
have write support having to keep both InodeMetadata and FATEntry
correct is going to get very annoying.
2024-04-21 15:34:33 +02:00
Undefine
d4badfac72
Kernel/FATFS: Store cluster list instead of block list
...
Once we have write support, managing clusters is going to be
way easier than managing blocks.
2024-04-21 15:34:33 +02:00
Undefine
7e251c3b4f
Kernel/FATFS: Return ENOTSUP on chown and chmod
2024-04-21 15:34:33 +02:00
Undefine
eb2721d650
Kernel/FATFS: Pass the FATEntry location to FATInode constructor
...
This is going to be necessary to flush the metadata later on.
2024-04-21 15:34:33 +02:00
Undefine
de574b9ed9
Kernel/FATFS: Improve error propagation in FATInode
2024-04-21 15:34:33 +02:00
Undefine
1350c555f6
Kernel/FATFS: Factor out the FAT reading to a function
...
Move the FAT reading code to a fat_read function in FATFS and move the
required functions to FATFS too.
2024-04-21 15:34:33 +02:00
implicitfield
b9d7e2db93
Kernel/FATFS: Prefer read_block() over raw_read()
...
`raw_read()` has proven to be a source of subtle bugs that occur as a
result of the cache and disk contents being out of sync.
2024-04-21 15:34:33 +02:00
Taj Morton
d6a519e9af
Kernel/FileSystem/FATFS: Restrict reads to the size of the file
...
Resolves issue where empty portions of a sector (or empty sectors in
a cluster) would be included with the returned data in a read().
2024-01-12 15:54:46 -07:00
Taj Morton
2995ee5858
Kernel/FileSystem/FATFS: Support FAT12 file system clusters
2024-01-12 15:54:46 -07:00
Taj Morton
1f70a728f0
Kernel/FileSystem/FATFS: Support FAT16 file system clusters
2024-01-12 15:54:46 -07:00
Taj Morton
67f567348f
Kernel/FileSystem/FATFS: Support for FAT12/16 DOS BIOS Parameter Blocks
2024-01-12 15:54:46 -07:00
kleines Filmröllchen
d1e6e6110d
Kernel/FileSystem: Rename logical_block_size -> device_block_size
...
This never was a logical block size, it always was a device specific
block size. Ideally the block size would change in accordance to
whatever the driver wants to use, but that is a change for the future.
For now, let's get rid of this confusing naming.
2023-07-28 14:51:07 +02:00
Liav A
7c0540a229
Everywhere: Move global Kernel pattern code to Kernel/Library directory
...
This has KString, KBuffer, DoubleBuffer, KBufferBuilder, IOWindow,
UserOrKernelBuffer and ScopedCritical classes being moved to the
Kernel/Library subdirectory.
Also, move the panic and assertions handling code to that directory.
2023-06-04 21:32:34 +02:00
Andreas Kling
e6fc7b3ff7
Kernel: Switch LockRefPtr<Inode> to RefPtr<Inode>
...
The main place where this is a little iffy is in RAMFS where inodes
have a LockWeakPtr to their parent inode. I've left that as a
LockWeakPtr for now.
2023-03-09 21:54:59 +01:00
Liav A
9790b81959
Kernel/FileSystem: Add check of read offset for the FATInode code
...
Apparently we lacked this important check from the beginning of this
piece of code. This check is crucial to ensure we only give back data
being related to the FATInode data buffer and nothing beyond it.
2023-02-19 01:01:45 +01:00
Ollrogge
361df6eff8
AK: Add conversion functions for packed DOS time format
...
This also adjusts the FATFS code to use the new functions and removes
the now redundant old conversion functions.
2023-02-12 13:13:15 -07:00
Taj Morton
31eeea08ba
Kernel/FileSystem: Fix handling of FAT names that don't fill an entry
...
* Fix bug where last character of a filename or extension would be
truncated (HELLO.TXT -> HELL.TX).
* Fix bug where additional NULL characters would be added to long
filenames that did not completely fill one of the Long Filename Entry
character fields.
2023-01-04 09:02:13 +00:00
sin-ack
3b03077abb
Kernel: Update the ".." inode for directories after a rename
...
Because the ".." entry in a directory is a separate inode, if a
directory is renamed to a new location, then we should update this entry
the point to the new parent directory as well.
Co-authored-by: Liav A <liavalb@gmail.com >
2022-11-25 17:33:05 +01:00
Andreas Kling
10fa72d451
Kernel: Use AK::Time for InodeMetadata timestamps instead of time_t
...
Before this change, we were truncating the nanosecond part of file
timestamps in many different places.
2022-11-24 16:56:27 +01:00
Liav A
e882b2ed05
Kernel: Split the FATFileSystem.{cpp,h} files into smaller components
2022-11-08 02:54:48 -07:00