summaryrefslogtreecommitdiff
path: root/Kernel/Ext2FileSystem.cpp
AgeCommit message (Collapse)Author
2019-04-03Kernel: Move FS-related files into Kernel/FileSystem/Andreas Kling
2019-04-03AK: Remove useless ktime.hAndreas Kling
2019-04-03AK: Clean up some of the confusion that is AK/kmalloc.{cpp,h}Andreas Kling
2019-03-27Kernel: Add Inode::truncate(size).Andreas Kling
- Use this to implement the O_TRUNC open flag. - Fix creat() to pass O_CREAT | O_TRUNC | O_WRONLY. - Make sure we truncate wherever appropriate.
2019-03-27Ext2FS: Avoid a lot of redundant writes to inode block arrays.Andreas Kling
2019-03-25Kernel: Do timekeeping manually instead of asking the RTC all the time.Andreas Kling
This introduces a tiny amount of timer drift which I will have to fix somehow eventually, but it's a huge improvement in timing consistency as we no longer suddenly jump from e.g 10:45:49.123 to 10:45:50.000.
2019-03-23Kernel: Introduce threads, and refactor everything in support of it.Andreas Kling
The scheduler now operates on threads, rather than on processes. Each process has a main thread, and can have any number of additional threads. The process exits when the main thread exits. This patch doesn't actually spawn any additional threads, it merely does all the plumbing needed to make it possible. :^)
2019-03-02Kernel+Userland: Add symlink() syscall and add "-s" flag to /bin/ln.Andreas Kling
It's now possible to create symbolic links! :^) This exposed an issue in Ext2FS where we'd write uninitialized data past the end of an inode's content. Fix this by zeroing out the tail end of the last block in a file.
2019-02-28Kernel: Make a copy of the dirty inode list before iterating in sync().Andreas Kling
2019-02-27Ext2FS: Fix hole in Ext2FSInode::directory_entry_count() locking.Andreas Kling
2019-02-27Kernel: Use KResult in link().Andreas Kling
2019-02-27Kernel: Use KResult in unlink() and rmdir().Andreas Kling
2019-02-27Add chown() syscall and a simple /bin/chown program.Andreas Kling
2019-02-25More moving towards using signed types.Andreas Kling
I'm still feeling this out, but I am starting to like the general idea.
2019-02-25Kernel: Add KResult and KResultOr<T> classes.Andreas Kling
The idea here is to combine a potential syscall error code with an arbitrary type in the case of success. I feel like this will end up much less error prone than returning some arbitrary type that kinda sorta has bool semantics (but sometimes not really) and passing the error through an out-param. This patch only converts a few syscalls to using it. More to come.
2019-02-25Convert more RetainPtr use to Retained.Andreas Kling
2019-02-25AK: Add Retained<T>, like RetainPtr, but never null.Andreas Kling
Also use some Clang attribute wizardry to get a warning for use-after-move.
2019-02-24Ext2FS: Don't copy more than sizeof(ext2_inode) bytes of raw inode data.Andreas Kling
Some file systems have inodes larger than sizeof(ext2_inode) so this would stomp all over unrelated data.
2019-02-22Ext2FS: Tweak a debug message to print file mode in octal.Andreas Kling
2019-02-21Kernel: Start adding various file system permission checks.Andreas Kling
Fail with EACCES in various situations. Fix userland bugs that were exposed.
2019-02-21Add a simple /bin/df which gathers its info from /proc/df.Andreas Kling
2019-02-21Kernel: Add link() syscall to create hard links.Andreas Kling
This accidentally grew into a little bit of VFS cleanup as well. Also add a simple /bin/ln implementation to exercise it.
2019-02-20Ext2FS: Remove the inode cache lock in favor of one big lock instead.Andreas Kling
2019-02-20Ext2FS: Lock a lot. Go way overkill with locking for now.Andreas Kling
2019-02-16Kernel: Make BochsVGADevice a BlockDevice and support mmapping it.Andreas Kling
Currently you can only mmap the entire framebuffer. Using this when starting up the WindowServer gets us yet another step closer towards it moving into userspace. :^)
2019-02-15Ext2FS: Fix various bugs in inode and block allocation.Andreas Kling
I had the wrong idea about how group indices work, so using a larger fs with more than one group caused all kinds of mess.
2019-02-11Ext2FS: Fix broken logic for accessing inode and block bitmaps.Andreas Kling
This logic only worked for the very first block group.
2019-02-11IDEDiskDevice: Detect disk errors and report failure to clients.Andreas Kling
Previously we'd just fail silently if there was an I/O error of any kind.
2019-02-08Ext2FS: Fix bitmap overrun when reaching outside the first block group.Andreas Kling
2019-02-08Ext2FS: Fix dumb bitmap size bug in *_inode_allocation_state().Andreas Kling
2019-02-05Kernel: Invalidate file-backed VMO's when inodes are written.Andreas Kling
The current strategy is simply to nuke all physical pages and force reload them from disk. This is obviously not optimal and should eventually be optimized. It should be fairly straightforward.
2019-02-03Ext2FS: Avoid a kmallocation every time we fetch an inode from disk.Andreas Kling
2019-01-31Big, possibly complete sweep of naming changes.Andreas Kling
2019-01-31Kernel: Include absolute paths of mount points in /proc/mountsAndreas Kling
2019-01-31Make stat() work on device files again.Andreas Kling
FileDescriptor will now keep a pointer to the original inode even after opening it resolves to a character device. Fixed up /bin/ls to display major and minor device numbers instead of size for device files.
2019-01-31Ext2FS: Remove an unnecessary heap allocation in create_inode().Andreas Kling
2019-01-30Fix dumb bug in HashTable::clear().Andreas Kling
We forgot to clear the m_buckets pointer. This meant that multiple calls to clear() would cause trouble.
2019-01-29Implement basic chmod() syscall and /bin/chmod helper.Andreas Kling
Only raw octal modes are supported right now. This patch also changes mode_t from 32-bit to 16-bit to match the on-disk type used by Ext2FS. I also ran into EPERM being errno=0 which was confusing, so I inserted an ESUCCESS in its place.
2019-01-28Add support for removing directories.Andreas Kling
It's really only supported in Ext2FS since SynthFS doesn't really want you mucking around with its files. This is pretty neat though :^) I ran into some trouble with HashMap while working on this but opted to work around it and leave that for a separate investigation.
2019-01-23Ext2FS: Include meta blocks in an inode's i_blocks count.Andreas Kling
2019-01-23Kernel: Get rid of Unix namespace.Andreas Kling
This is no longer needed as the Kernel can stand on its own legs now and there won't be any conflict with host system data types.
2019-01-23VFS: Rename FS::id() to fsid() for consistency.Andreas Kling
2019-01-23Move VFS sources into Kernel/.Andreas Kling