On Mon, Dec 15, 2025 at 02:52:53PM +0800, Kefu Chai wrote: > + Wolfgang, > > ping? > > Hi Wolfgang, > > I wanted tp follow up on the patch I submitted about a month ago. > > I haven't received any feedback yet and wanted to check if there are any > concerns with the change or if any changes are needed. I'm happy to > revise the patch or provide additional information if that would be > helpful.
I'm currently on parental leave and only working a few hours. Looking at them today. > > Thanks for your time and for maintaining this project! > > Regards, > > On Thu Nov 13, 2025 at 10:13 AM CST, Kefu Chai wrote: > > This fixes deprecation warnings where extern function declarations > > did not explicitly specify the ABI. All extern fn types in the > > FUSE Operations struct now use `extern "C" fn` instead of `extern fn`. > > > > The C ABI is required for FUSE callbacks that interface with the > > native libfuse library. > > > > Signed-off-by: Kefu Chai <[email protected]> > > --- > > src/sys.rs | 86 +++++++++++++++++++++++++++--------------------------- > > 1 file changed, 43 insertions(+), 43 deletions(-) > > > > diff --git a/src/sys.rs b/src/sys.rs > > index a08eece..17a01de 100644 > > --- a/src/sys.rs > > +++ b/src/sys.rs > > @@ -113,49 +113,49 @@ default_to_none! { > > // The order in which the functions are listed matters, as the > > offset in the > > // struct defines what function the fuse driver uses. > > // It should therefore not be altered! > > - pub init: Option<extern fn(userdata: MutPtr)>, > > - pub destroy: Option<extern fn(userdata: MutPtr)>, > > - pub lookup: Option<extern fn(req: Request, parent: u64, > > name: StrPtr)>, > > - pub forget: Option<extern fn(req: Request, inode: u64, > > nlookup: u64)>, > > - pub getattr: Option<extern fn(req: Request, inode: u64, > > file_info: *const FuseFileInfo)>, > > - pub setattr: Option<extern fn(req: Request, inode: u64, > > attr: *const libc::stat, to_set: c_int, file_info: *const FuseFileInfo)>, > > - pub readlink: Option<extern fn(req: Request, inode: u64)>, > > - pub mknod: Option<extern fn(req: Request, parent: u64, > > name: StrPtr, mode: libc::mode_t, rdev: libc::dev_t)>, > > - pub mkdir: Option<extern fn(req: Request, parent: u64, > > name: StrPtr, mode: libc::mode_t)>, > > - pub unlink: Option<extern fn(req: Request, parent: u64, > > name: StrPtr)>, > > - pub rmdir: Option<extern fn(req: Request, parent: u64, > > name: StrPtr)>, > > - pub symlink: Option<extern fn(req: Request, link: StrPtr, > > parent: u64, name: StrPtr)>, > > - pub rename: Option<extern fn(req: Request, parent: u64, > > name: StrPtr, newparent: u64, newname: StrPtr, flags: c_int)>, > > - pub link: Option<extern fn(req: Request, inode: u64, > > newparent: u64, newname: StrPtr)>, > > - pub open: Option<extern fn(req: Request, inode: u64, > > file_info: *const FuseFileInfo)>, > > - pub read: Option<extern fn(req: Request, inode: u64, > > size: size_t, offset: libc::off_t, file_info: *const FuseFileInfo)>, > > - pub write: Option<extern fn(req: Request, inode: u64, > > buffer: *const u8, size: size_t, offset: libc::off_t, file_info: *const > > FuseFileInfo)>, > > - pub flush: Option<extern fn(req: Request, inode: u64, > > file_info: *const FuseFileInfo)>, > > - pub release: Option<extern fn(req: Request, inode: u64, > > file_info: *const FuseFileInfo)>, > > - pub fsync: Option<extern fn(req: Request, inode: u64, > > datasync: c_int, file_info: *const FuseFileInfo)>, > > - pub opendir: Option<extern fn(req: Request, inode: u64, > > file_info: *const FuseFileInfo)>, > > - pub readdir: Option<extern fn(req: Request, inode: u64, > > size: size_t, offset: off_t, file_info: *const FuseFileInfo)>, > > - pub releasedir: Option<extern fn(req: Request, inode: u64, > > file_info: *const FuseFileInfo)>, > > - pub fsyncdir: Option<extern fn(req: Request, inode: u64, > > datasync: c_int, file_info: *const FuseFileInfo)>, > > - pub statfs: Option<extern fn(req: Request, inode: u64)>, > > - pub setxattr: Option<extern fn(req: Request, inode: u64, > > name: StrPtr, value: StrPtr, size: size_t, flags: c_int)>, > > - pub getxattr: Option<extern fn(req: Request, inode: u64, > > name: StrPtr, size: size_t)>, > > - pub listxattr: Option<extern fn(req: Request, inode: u64, > > size: size_t)>, > > - pub removexattr: Option<extern fn(req: Request, inode: u64, > > name: StrPtr)>, > > - pub access: Option<extern fn(req: Request, inode: u64, > > mask: i32)>, > > - pub create: Option<extern fn(req: Request, parent: u64, > > name: StrPtr, mode: libc::mode_t, file_info: *const FuseFileInfo)>, > > - pub getlk: Option<extern fn(req: Request, inode: u64, > > file_info: *const FuseFileInfo, lock: MutPtr)>, > > - pub setlk: Option<extern fn(req: Request, inode: u64, > > file_info: *const FuseFileInfo, lock: MutPtr, sleep: c_int)>, > > - pub bmap: Option<extern fn(req: Request, inode: u64, > > blocksize: size_t, idx: u64)>, > > - pub ioctl: Option<extern fn(req: Request, inode: u64, > > cmd: c_int, arg: MutPtr, file_info: *const FuseFileInfo, flags: c_int, > > in_buf: ConstPtr, in_bufsz: size_t, out_bufsz: size_t)>, > > - pub poll: Option<extern fn(req: Request, inode: u64, > > file_info: *const FuseFileInfo, pollhandle: MutPtr)>, > > - pub write_buf: Option<extern fn(req: Request, inode: u64, > > bufv: MutPtr, offset: libc::off_t, file_info: *const FuseFileInfo)>, > > - pub retrieve_reply: Option<extern fn(req: Request, cookie: > > ConstPtr, inode: u64, offset: libc::off_t, bufv: MutPtr)>, > > - pub forget_multi: Option<extern fn(req: Request, count: size_t, > > forgets: MutPtr)>, > > - pub flock: Option<extern fn(req: Request, inode: u64, > > file_info: *const FuseFileInfo, op: c_int)>, > > - pub fallocate: Option<extern fn(req: Request, inode: u64, > > mode: c_int, offset: libc::off_t, length: libc::off_t, file_info: *const > > FuseFileInfo)>, > > - pub readdirplus: Option<extern fn(req: Request, inode: u64, > > size: size_t, offset: off_t, file_info: *const FuseFileInfo)>, > > - pub copy_file_range: Option<extern fn(req: Request, ino_in: u64, > > off_in: libc::off_t, fi_in: *const FuseFileInfo, ino_out: u64, off_out: > > libc::off_t, fi_out: *const FuseFileInfo, len: size_t, flags: c_int)>, > > + pub init: Option<extern "C" fn(userdata: MutPtr)>, > > + pub destroy: Option<extern "C" fn(userdata: MutPtr)>, > > + pub lookup: Option<extern "C" fn(req: Request, parent: > > u64, name: StrPtr)>, > > + pub forget: Option<extern "C" fn(req: Request, inode: > > u64, nlookup: u64)>, > > + pub getattr: Option<extern "C" fn(req: Request, inode: > > u64, file_info: *const FuseFileInfo)>, > > + pub setattr: Option<extern "C" fn(req: Request, inode: > > u64, attr: *const libc::stat, to_set: c_int, file_info: *const > > FuseFileInfo)>, > > + pub readlink: Option<extern "C" fn(req: Request, inode: > > u64)>, > > + pub mknod: Option<extern "C" fn(req: Request, parent: > > u64, name: StrPtr, mode: libc::mode_t, rdev: libc::dev_t)>, > > + pub mkdir: Option<extern "C" fn(req: Request, parent: > > u64, name: StrPtr, mode: libc::mode_t)>, > > + pub unlink: Option<extern "C" fn(req: Request, parent: > > u64, name: StrPtr)>, > > + pub rmdir: Option<extern "C" fn(req: Request, parent: > > u64, name: StrPtr)>, > > + pub symlink: Option<extern "C" fn(req: Request, link: > > StrPtr, parent: u64, name: StrPtr)>, > > + pub rename: Option<extern "C" fn(req: Request, parent: > > u64, name: StrPtr, newparent: u64, newname: StrPtr, flags: c_int)>, > > + pub link: Option<extern "C" fn(req: Request, inode: > > u64, newparent: u64, newname: StrPtr)>, > > + pub open: Option<extern "C" fn(req: Request, inode: > > u64, file_info: *const FuseFileInfo)>, > > + pub read: Option<extern "C" fn(req: Request, inode: > > u64, size: size_t, offset: libc::off_t, file_info: *const FuseFileInfo)>, > > + pub write: Option<extern "C" fn(req: Request, inode: > > u64, buffer: *const u8, size: size_t, offset: libc::off_t, file_info: > > *const FuseFileInfo)>, > > + pub flush: Option<extern "C" fn(req: Request, inode: > > u64, file_info: *const FuseFileInfo)>, > > + pub release: Option<extern "C" fn(req: Request, inode: > > u64, file_info: *const FuseFileInfo)>, > > + pub fsync: Option<extern "C" fn(req: Request, inode: > > u64, datasync: c_int, file_info: *const FuseFileInfo)>, > > + pub opendir: Option<extern "C" fn(req: Request, inode: > > u64, file_info: *const FuseFileInfo)>, > > + pub readdir: Option<extern "C" fn(req: Request, inode: > > u64, size: size_t, offset: off_t, file_info: *const FuseFileInfo)>, > > + pub releasedir: Option<extern "C" fn(req: Request, inode: > > u64, file_info: *const FuseFileInfo)>, > > + pub fsyncdir: Option<extern "C" fn(req: Request, inode: > > u64, datasync: c_int, file_info: *const FuseFileInfo)>, > > + pub statfs: Option<extern "C" fn(req: Request, inode: > > u64)>, > > + pub setxattr: Option<extern "C" fn(req: Request, inode: > > u64, name: StrPtr, value: StrPtr, size: size_t, flags: c_int)>, > > + pub getxattr: Option<extern "C" fn(req: Request, inode: > > u64, name: StrPtr, size: size_t)>, > > + pub listxattr: Option<extern "C" fn(req: Request, inode: > > u64, size: size_t)>, > > + pub removexattr: Option<extern "C" fn(req: Request, inode: > > u64, name: StrPtr)>, > > + pub access: Option<extern "C" fn(req: Request, inode: > > u64, mask: i32)>, > > + pub create: Option<extern "C" fn(req: Request, parent: > > u64, name: StrPtr, mode: libc::mode_t, file_info: *const FuseFileInfo)>, > > + pub getlk: Option<extern "C" fn(req: Request, inode: > > u64, file_info: *const FuseFileInfo, lock: MutPtr)>, > > + pub setlk: Option<extern "C" fn(req: Request, inode: > > u64, file_info: *const FuseFileInfo, lock: MutPtr, sleep: c_int)>, > > + pub bmap: Option<extern "C" fn(req: Request, inode: > > u64, blocksize: size_t, idx: u64)>, > > + pub ioctl: Option<extern "C" fn(req: Request, inode: > > u64, cmd: c_int, arg: MutPtr, file_info: *const FuseFileInfo, flags: c_int, > > in_buf: ConstPtr, in_bufsz: size_t, out_bufsz: size_t)>, > > + pub poll: Option<extern "C" fn(req: Request, inode: > > u64, file_info: *const FuseFileInfo, pollhandle: MutPtr)>, > > + pub write_buf: Option<extern "C" fn(req: Request, inode: > > u64, bufv: MutPtr, offset: libc::off_t, file_info: *const FuseFileInfo)>, > > + pub retrieve_reply: Option<extern "C" fn(req: Request, cookie: > > ConstPtr, inode: u64, offset: libc::off_t, bufv: MutPtr)>, > > + pub forget_multi: Option<extern "C" fn(req: Request, count: > > size_t, forgets: MutPtr)>, > > + pub flock: Option<extern "C" fn(req: Request, inode: > > u64, file_info: *const FuseFileInfo, op: c_int)>, > > + pub fallocate: Option<extern "C" fn(req: Request, inode: > > u64, mode: c_int, offset: libc::off_t, length: libc::off_t, file_info: > > *const FuseFileInfo)>, > > + pub readdirplus: Option<extern "C" fn(req: Request, inode: > > u64, size: size_t, offset: off_t, file_info: *const FuseFileInfo)>, > > + pub copy_file_range: Option<extern "C" fn(req: Request, ino_in: > > u64, off_in: libc::off_t, fi_in: *const FuseFileInfo, ino_out: u64, > > off_out: libc::off_t, fi_out: *const FuseFileInfo, len: size_t, flags: > > c_int)>, > > } > > } > > > > > > _______________________________________________ > pve-devel mailing list > [email protected] > https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel > > _______________________________________________ pve-devel mailing list [email protected] https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
