fix: symlink resolve.
[lunaix-os.git] / lunaix-os / kernel / fs / pcache.c
index 9d883f90485402f702617dbd8a721040315d925b..0094ec4bc0c7fde1e67f2a799e180ff302f67c1e 100644 (file)
@@ -137,7 +137,7 @@ pcache_read(struct v_inode* inode, void* data, uint32_t len, uint32_t fpos)
             }
 
             // Filling up the page
             }
 
             // Filling up the page
-            errno = inode->default_fops.read(inode, pg->pg, PG_SIZE, pg->fpos);
+            errno = inode->default_fops->read(inode, pg->pg, PG_SIZE, pg->fpos);
             if (errno >= 0 && errno < PG_SIZE) {
                 // EOF
                 len = buf_off + errno;
             if (errno >= 0 && errno < PG_SIZE) {
                 // EOF
                 len = buf_off + errno;
@@ -175,7 +175,8 @@ pcache_commit(struct v_inode* inode, struct pcache_pg* page)
         return;
     }
 
         return;
     }
 
-    int errno = inode->default_fops.write(inode, page->pg, PG_SIZE, page->fpos);
+    int errno =
+      inode->default_fops->write(inode, page->pg, PG_SIZE, page->fpos);
 
     if (!errno) {
         page->flags &= ~PCACHE_DIRTY;
 
     if (!errno) {
         page->flags &= ~PCACHE_DIRTY;
@@ -189,6 +190,10 @@ pcache_commit(struct v_inode* inode, struct pcache_pg* page)
 void
 pcache_commit_all(struct v_inode* inode)
 {
 void
 pcache_commit_all(struct v_inode* inode)
 {
+    if (!inode->pg_cache) {
+        return;
+    }
+
     struct pcache* cache = inode->pg_cache;
     struct pcache_pg *pos, *n;
 
     struct pcache* cache = inode->pg_cache;
     struct pcache_pg *pos, *n;