omfs的普通檔案的建立刪除與目錄建立刪除的動作非常類似,下面僅僅描述一下:
在omfs_create處下斷點:
breakpoint 3, omfs_create (dir=0xdde13c20, dentry=0xdf6f6440, mode=33188,
nd=0xddbe1eb8) at fs/omfs/dir.c:304
函式呼叫堆疊如下:
#0 omfs_create (dir=0xdde13c20, dentry=0xdf6f6440, mode=33188, nd=0xddbe1eb8)
at fs/omfs/dir.c:304
#1 0xc029e952 in vfs_create (dir=0xdde13c20, dentry=0xdf6f6440, mode=33188,
nd=0xddbe1eb8) at fs/namei.c:1418
#2 0xc029ebe5 in __open_namei_create (nd=0xddbe1eb8, path=0xddbe1f18,
open_flag=35137, mode=420) at fs/namei.c:1513
#3 0xc029f119 in do_last (nd=0xddbe1eb8, path=0xddbe1f18, open_flag=35137,
acc_mode=34, mode=438, pathname=0xd784f000 "aaaa") at fs/namei.c:1696
#4 0xc029f513 in do_filp_open (dfd=-100, pathname=0xd784f000 "aaaa",
open_flag=35137, mode=438, acc_mode=34) at fs/namei.c:1835
#5 0xc028f239 in do_sys_open (dfd=-100, filename=0xbfe8392a "aaaa",
flags=35137, mode=438) at fs/open.c:1052
#6 0xc028f2a7 in sys_open (filename=0xbfe8392a "aaaa", flags=35137, mode=438)
at fs/open.c:1073
#7 0xc0104657 in ?? () at arch/x86/kernel/entry_32.s:457
omfs_createàomfs_add_node(dir, dentry, mode | s_ifreg);
區別如下:
在omfs_new_inode中:
switch (mode & s_ifmt) else
omfs_make_empty_table(bh, omfs_extent_start);
#define omfs_extent_start 0x1d0
對於檔案的inode,我們會在inode中寫入omfs_extent資訊:
oe->e_next = ~cpu_to_be64(0ull);
oe->e_extent_count = cpu_to_be32(1),
oe->e_fill = cpu_to_be32(0x22),
oe->e_entry.e_cluster = ~cpu_to_be64(0ull);
oe->e_entry.e_blocks = ~cpu_to_be64(0ull);
linux檔案系統omfs檔案的重新命名
在omfs rename中下斷點 breakpoint 4,omfs rename old dir 0xddf2cca8,old dentry 0xdde57330,new dir 0xddf2cca8,new dentry 0xddf2f220 at fs omfs dir.c 392 touch...
linux 檔案系統 Linux 檔案系統結構介紹
ubuntu 像所有類unix系統一樣 在分層樹中組織檔案,其中的關係就像父母和孩子一樣。目錄可以包含其他目錄以及常規檔案,它們是樹的 葉子 樹的任何元素都可以通過路徑名引用 絕對路徑以字元 標識根目錄,其中包含所有其他目錄和檔案 開頭,然後列出必須遍歷以到達該元素的每個子目錄,每個子目錄用 符號分...
Linux的檔案系統
如果您是一位新手,也許 您還不知道如何把檔案從windows拷貝到linux上吧?下面,我們將說明unix檔案系統以及mount的工作過程,然後再比較詳細地討論 mount的使用和有關選項。如果您已經了解unix檔案系統是如何工作的,那麼可以跳過下面一節。否則,您最好繼續接著學習 mount 的含義...