applied, thanks On Thu, Nov 13, 2025 at 10:13:01AM +0800, 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)>, > } > } > > -- > 2.47.3
_______________________________________________ pve-devel mailing list [email protected] https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
