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

Reply via email to