2015-08-31 16 views
10

FUSE API không hiển thị cuộc gọi sync cấp hệ thống tệp, chỉ fsyncfsyncdir. Có nghĩa là khi sync được gọi (hoặc syncfs bên trong một điểm gắn FUSE), hạt nhân gọi fsync trên tất cả các tệp đang mở trên tất cả các hệ thống tệp được gắn FUSE? Hoặc là có một ngữ nghĩa khác nhau?Hệ thống 'đồng bộ hóa' và 'syncfs' có gọi bản đồ đến các cuộc gọi 'fsync' của FUSE không?

Trả lời

5

Khi bạn gọi sfsall syncfs (2), hạt nhân gọi hệ thống sync_filesystem() trên siêu khối của hệ thống tệp mà fd thuộc về. Nếu hệ thống tệp được đề cập thực hiện thao tác superblock .sync_fs, nó sẽ được gọi. FUSE không và do đó sync_filesystem() cho FUSE chỉ gọi __sync_blockdev() trên/dev/fuse, mà sẽ đồng bộ tất cả các trang bẩn (và do đó tất cả các tập tin không đồng bộ) cho cầu chì đó gắn kết.

+0

Cảm ơn bạn. Bạn có thể làm rõ thêm một chút về phía câu hỏi của tôi: Liệu một khách hàng FUSE có biết bất kỳ cách nào khi đồng bộ (2) hoặc syncfs (2) được gọi không? –

+0

Xin lỗi vì sự chậm trễ. Từ những gì tôi hiểu, khi một trong hai syscalls trên được gọi bởi ứng dụng, fuse_flush() được gọi trong kernel, được truyền cho máy khách FUSE của bạn. – itisravi

Các vấn đề liên quan