簡體   English   中英

如何知道/更改保險絲readdir功能中的緩沖區大小?

[英]How to know/change buffer size in fuse readdir function?

我正在為Linux中的FUSE文件系統編寫readdir函數。 我的想法是在緩沖區中放置任意數量的目錄條目,以在列出目錄時避免來自外部程序的getdents syscalls調用(避免為每個文件調用)。

該函數的buffer參數由FUSE提供,並指向保險絲類型為fuse_fill_dir_tfiller輔助函數的指針,該函數知道如何處理該緩沖區。

問題是我不知道如何獲取或更改此緩沖區的大小,並且當緩沖區已滿時, filler函數將返回1

請注意,我正在使用偏移量來調用filler函數,而使用0則不是一個選擇,因為我不想只在一個getdents調用中返回所有目錄項。

filler(buf, d->d_name, NULL, next_offset);

測試會為緩沖區拋出102個固定的最大條目數,但是我不想依靠“不可思議”的數字,而且我也不知道該數字來自何處。

根據getdents() 手冊頁 ,緩沖區由調用應用程序提供:

getdents()

  The system call getdents() reads several linux_dirent structures from the directory referred to by the open file descriptor fd into the buffer pointed to by dirp. The argument count specifies the size of that buffer. 

因此, getdents()系統調用的數量getdents()執行調用的應用程序確定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM