feat: update .gitignore and enhance ext2 file timestamps
Added back g_Unixseconds to the ext2 driver Signed-off-by: kaguya <vpshinomiya@protonmail.com>
This commit is contained in:
+16
-15
@@ -5,6 +5,7 @@
|
||||
#include <stdbool.h>
|
||||
#include "string.h"
|
||||
#include "mp/spinlock.h"
|
||||
#include "arch/x86_64/pit.h"
|
||||
|
||||
// ── module state ─────────────────────────────────────────────────────────────
|
||||
|
||||
@@ -607,8 +608,8 @@ bool ext2_write_file_internal(ext2_inode_t* inode, uint32_t inum,
|
||||
}
|
||||
|
||||
inode->i_blocks = ((new_size + block_size - 1) / block_size) * (block_size / 512);
|
||||
//inode->i_mtime = (uint32_t)g_Unixseconds;
|
||||
//inode->i_ctime = (uint32_t)g_Unixseconds;
|
||||
inode->i_mtime = (uint32_t)g_Unixseconds;
|
||||
inode->i_ctime = (uint32_t)g_Unixseconds;
|
||||
kfree(tmp);
|
||||
ext2_write_inode_internal(inum, inode);
|
||||
return true;
|
||||
@@ -653,8 +654,8 @@ bool ext2_truncate_internal(ext2_inode_t* inode, uint32_t inum, uint32_t new_siz
|
||||
// extending: sparse — just update the size field
|
||||
|
||||
inode->i_size = new_size;
|
||||
//inode->i_mtime = (uint32_t)g_Unixseconds;
|
||||
//inode->i_ctime = (uint32_t)g_Unixseconds;
|
||||
inode->i_mtime = (uint32_t)g_Unixseconds;
|
||||
inode->i_ctime = (uint32_t)g_Unixseconds;
|
||||
return ext2_write_inode_internal(inum, inode);
|
||||
}
|
||||
|
||||
@@ -765,7 +766,7 @@ static bool dir_add_entry_internal(ext2_inode_t* dir, uint32_t dir_inum,
|
||||
|
||||
dir->i_size += block_size;
|
||||
dir->i_blocks = (dir->i_size / block_size) * (block_size / 512);
|
||||
//dir->i_mtime = (uint32_t)g_Unixseconds;
|
||||
dir->i_mtime = (uint32_t)g_Unixseconds;
|
||||
ext2_write_inode_internal(dir_inum, dir);
|
||||
kfree(buf);
|
||||
return true;
|
||||
@@ -799,7 +800,7 @@ static bool dir_remove_entry_internal(ext2_inode_t* dir, uint32_t dir_inum, cons
|
||||
else
|
||||
e->inode = 0; // first entry: zero inode
|
||||
ext2_write_block_raw(phys, buf);
|
||||
//dir->i_mtime = (uint32_t)g_Unixseconds;
|
||||
dir->i_mtime = (uint32_t)g_Unixseconds;
|
||||
ext2_write_inode_internal(dir_inum, dir);
|
||||
kfree(buf);
|
||||
return true;
|
||||
@@ -912,7 +913,7 @@ bool ext2_read_dir_internal(ext2_inode_t* dir) {
|
||||
uint8_t nl = e->name_len > EXT2_NAME_LEN ? EXT2_NAME_LEN : e->name_len;
|
||||
memcpy(name, e->name, nl);
|
||||
name[nl] = '\0';
|
||||
printf(" %-32s inode=%-6u %s\n",
|
||||
printf(" %s inode=%u %s\n",
|
||||
name, e->inode, ext2_file_type_string(e->file_type));
|
||||
}
|
||||
off += e->rec_len;
|
||||
@@ -1017,7 +1018,7 @@ bool ext2_create_file_internal(ext2_inode_t* dir, uint32_t dir_inum,
|
||||
ext2_inode_t inode = {0};
|
||||
inode.i_mode = EXT2_S_IFREG | 0644;
|
||||
inode.i_links_count = 1;
|
||||
//inode.i_atime = inode.i_ctime = inode.i_mtime = (uint32_t)g_Unixseconds;
|
||||
inode.i_atime = inode.i_ctime = inode.i_mtime = (uint32_t)g_Unixseconds;
|
||||
ext2_write_inode_internal(inum, &inode);
|
||||
|
||||
if (!dir_add_entry_internal(dir, dir_inum, inum, name, EXT2_FT_REG_FILE)) {
|
||||
@@ -1060,7 +1061,7 @@ bool ext2_mkdir_internal(ext2_inode_t* parent, uint32_t parent_inum,
|
||||
dir.i_size = block_size;
|
||||
dir.i_blocks = block_size / 512;
|
||||
dir.i_block[0] = phys;
|
||||
//dir.i_atime = dir.i_ctime = dir.i_mtime = (uint32_t)g_Unixseconds;
|
||||
dir.i_atime = dir.i_ctime = dir.i_mtime = (uint32_t)g_Unixseconds;
|
||||
ext2_write_inode_internal(inum, &dir);
|
||||
|
||||
uint8_t* buf = kmalloc(block_size);
|
||||
@@ -1125,11 +1126,11 @@ bool ext2_unlink_internal(ext2_inode_t* dir, uint32_t dir_inum, const char* name
|
||||
fi.i_links_count--;
|
||||
if (fi.i_links_count == 0) {
|
||||
ext2_free_inode_blocks_internal(&fi);
|
||||
//fi.i_dtime = (uint32_t)g_Unixseconds;
|
||||
fi.i_dtime = (uint32_t)g_Unixseconds;
|
||||
ext2_write_inode_internal(inum, &fi);
|
||||
ext2_free_inode_internal(inum, false);
|
||||
} else {
|
||||
//fi.i_ctime = (uint32_t)g_Unixseconds;
|
||||
fi.i_ctime = (uint32_t)g_Unixseconds;
|
||||
ext2_write_inode_internal(inum, &fi);
|
||||
}
|
||||
ext2_sync();
|
||||
@@ -1166,7 +1167,7 @@ bool ext2_rmdir_internal(ext2_inode_t* parent, uint32_t parent_inum, const char*
|
||||
|
||||
ext2_free_inode_blocks_internal(&dir);
|
||||
dir.i_links_count = 0;
|
||||
//dir.i_dtime = (uint32_t)g_Unixseconds;
|
||||
dir.i_dtime = (uint32_t)g_Unixseconds;
|
||||
ext2_write_inode_internal(inum, &dir);
|
||||
ext2_free_inode_internal(inum, true);
|
||||
|
||||
@@ -1272,7 +1273,7 @@ bool ext2_symlink_internal(ext2_inode_t* dir, uint32_t dir_inum,
|
||||
inode.i_mode = EXT2_S_IFLNK | 0777;
|
||||
inode.i_links_count = 1;
|
||||
inode.i_size = tlen;
|
||||
//inode.i_atime = inode.i_ctime = inode.i_mtime = (uint32_t)g_Unixseconds;
|
||||
inode.i_atime = inode.i_ctime = inode.i_mtime = (uint32_t)g_Unixseconds;
|
||||
|
||||
if (tlen < 60) {
|
||||
// fast symlink: target stored directly in i_block[]
|
||||
@@ -1368,7 +1369,7 @@ bool ext2_chmod_internal(uint32_t inum, uint16_t mode) {
|
||||
ext2_inode_t inode;
|
||||
if (!ext2_read_inode_internal(inum, &inode)) return false;
|
||||
inode.i_mode = (inode.i_mode & 0xF000) | (mode & 0x0FFF);
|
||||
//inode.i_ctime = (uint32_t)g_Unixseconds;
|
||||
inode.i_ctime = (uint32_t)g_Unixseconds;
|
||||
return ext2_write_inode_internal(inum, &inode);
|
||||
}
|
||||
|
||||
@@ -1377,7 +1378,7 @@ bool ext2_chown_internal(uint32_t inum, uint16_t uid, uint16_t gid) {
|
||||
if (!ext2_read_inode_internal(inum, &inode)) return false;
|
||||
inode.i_uid = uid;
|
||||
inode.i_gid = gid;
|
||||
//inode.i_ctime = (uint32_t)g_Unixseconds;
|
||||
inode.i_ctime = (uint32_t)g_Unixseconds;
|
||||
return ext2_write_inode_internal(inum, &inode);
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -203,6 +203,7 @@ void kmain(void) {
|
||||
x86_64_PIT_Initialize(1000);
|
||||
asm volatile("sti");
|
||||
calibrate_tsc();
|
||||
|
||||
|
||||
|
||||
//while (1) asm volatile("hlt");
|
||||
@@ -425,7 +426,7 @@ void kmain(void) {
|
||||
}
|
||||
|
||||
|
||||
pci_init();
|
||||
/*pci_init();
|
||||
|
||||
pci_device_t hda;
|
||||
if (pci_find_hda(&hda)) {
|
||||
@@ -438,7 +439,7 @@ void kmain(void) {
|
||||
}
|
||||
} else {
|
||||
printf("[PCI] No HDA controller found!\n");
|
||||
}
|
||||
}*/
|
||||
|
||||
|
||||
//syscall_init();
|
||||
|
||||
Reference in New Issue
Block a user