我正在寫一個FUSE overlay fs(notifyfs),它可以是一個數據庫客戶端可以通過查詢從 中獲取數據。我的意圖是使它成爲一個緩存/ overlayfs /數據庫客戶端可以從顯示條目及其屬性(屬性,但也mimetype,圖標等)時獲取數據。如何通過套接字發送數據:一個緩衝區,scatter/gatter或readdir是什麼樣的?
查詢是獲取目錄的內容。已經與notifyfs連接(= fd)的客戶端通過「list_message」請求數據。我的問題是現在如何編程notifyfs必須提供的響應。我正在考慮三種/兩種不同的方法。請注意以下幾點:
notifyfs與不同的條目,每個條目排序的基本形式回覆:
int mode
uid_t uid
gid_t gid
size_t size
timespec ctime
timespec mtime
timespec atime
int lenname
char name[]
(稱之爲notifyfs_entry_struct)
注意名稱的len不固定,並且最大爲255. 進一步的客戶請求一定數量的條目,最大值。我完全不確定這個最大值,但它會像80.
a。一個大緩衝區。的大小是這樣的:
80×(255 +的sizeof(結構notifyfs_entry_struct))
這將超過20400個字節,以確定。
b。固定大小的塊,使用像iovec或readdir這樣的東西。
什麼是最佳選擇? 第一種方法使用的緩衝區至少有20400字節,這是很多,但它仍然可行嗎?
Stef
非常感謝。不,我使用本地套接字。客戶端是本地應用程序,它們希望從某個特定名稱(目錄或普通文件)和最大數量的條目中獲取目錄的內容。所以這是一個數據庫FS。你說什麼方法並不重要。但在第一種情況下(一個大緩衝區)的大小將非常大(25 K)。那還好嗎? – user1388973
是的,它仍然可以。 –