]> Zhao Yanbai Git Server - kernel.git/commitdiff
修复没有正确初始化block buffer的问题
authoracevest <zhaoyanbai@126.com>
Thu, 5 Feb 2026 13:07:40 +0000 (21:07 +0800)
committeracevest <zhaoyanbai@126.com>
Thu, 5 Feb 2026 13:07:40 +0000 (21:07 +0800)
fs/buffer.c

index 2b4c2d09759321312f57c11cf07c3c125b3bb8d9..83bc864d43660aa004293a928fcf20e41207276f 100644 (file)
@@ -220,6 +220,10 @@ void init_buffer() {
             if (page_left_space < blocksize) {
                 data = (void*)page2va(alloc_one_page(0));
                 page = va2page(data);
+                page_left_space = PAGE_SIZE;
+
+                // printk("blocksize %u\n", blocksize);
+                // printk("page[%u] %08x\n", page->index, data);
             }
 
             bbuffer_t* b = kmem_cache_alloc(bbufer_kmem_cache, 0);
@@ -228,7 +232,8 @@ void init_buffer() {
             b->block = 0;
             b->block_size = blocksize;
             atomic_set(&(b->ref_count), 0);
-            b->data = data + j * blocksize;
+            // b->data = data + (page_left_space - blocksize);
+            b->data = data + (PAGE_SIZE - page_left_space);
             b->dev = 0;
             b->page = page;
             b->uptodate = 0;
@@ -240,6 +245,8 @@ void init_buffer() {
 
             list_add(&b->node, &store[i].free_list);
 
+            // printk("[%u] bbuffer[%u].data %08x\n", blocksize, j, b->data);
+
             page_left_space -= blocksize;
         }
     }