2014-06-09 69 views
1

如果我需要存儲特定於inode的數據,我可以使用此字段嗎? 上下文是我正在編寫的一個linux模塊,它需要爲每個inode保存一個特定的結構(這個模塊的每個設備都有一個inode)。inode i_private字段存儲私人數據

我知道在文件描述符中,我可以將數據存儲在private_data字段中。 i_private inode的「對應」字段?

回答

1

此字段由fs驅動程序使用。從ext4.h摘錄:

static inline ext4_io_end_t *ext4_inode_aio(struct inode *inode) 
{ 
    return inode->i_private; 
} 

static inline void ext4_inode_aio_set(struct inode *inode, ext4_io_end_t *io) 
{ 
    inode->i_private = io; 
} 

所以,如果你正在寫自己的文件系統,然後它是完全確定。但是,如果您使用現有文件系統的inode,則不應該這樣做,因爲您會損壞inode。

+0

是否有一個字段,如文件描述符struct中的private_data,我可以使用它來存儲我自己的數據而不破壞inode? – Binary

+0

你在做什麼inode? –

+0

我正在創建一個名爲'abc'的字符設備模塊。 我需要爲每個設備存儲一個結構('abc0','abc1',...),因此每個將在特定設備上調用open()的用戶將獲得設備的相應結構。 即,如果兩個進程調用open(abc0,..),他們可以訪問相同的結構。 – Binary