RE: [RFC] Should we consider to re-write HFS/HFS+ in Rust?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 2025-06-20 at 20:11 +0200, Miguel Ojeda wrote:
> On Fri, Jun 20, 2025 at 7:50 PM Viacheslav Dubeyko
> <Slava.Dubeyko@xxxxxxx> wrote:
> > 
> > Nowadays, VFS and memory subsystems are C implemented functionality. And I don't
> > think that it will be changed any time soon. So, even file system driver will be
> > completely re-written in Rust, then it should be ready to be called from C code.
> 
> That is fine and expected.
> 
> > Moreover, file system driver needs to interact with block layer that is written
> > in C too. So, glue code is inevitable right now. How bad and inefficient could
> > be using the glue code? Could you please share some example?
> 
> Please take a look the proposed VFS abstractions, the filesystems that
> were prototyped on top of them, and generally other Rust code we have.
> 
> As for "how bad", the key is that every time you go through a C
> signature, you need to constrain yourself to what C can encode (which
> is not much), use unsafe code and other interop issues. Thus you want
> to avoid having to go back and forth all the time.
> 
> Thus, the idea is to write the filesystem in Rust using abstractions
> that shield you from that.
> 
> Cc'ing other potentially interested/related people.
> 

I completely see your point. But let's consider allegory of home construction.
Usually, we need to start from foundation, then we need to raise the walls, and
so on. The file system's metadata is the foundation and if I would like to re-
write the file system driver, then I need to start from metadata. It means that
it makes sense to re-write, for example, bitmap or b-tree functionality and to
check that it works completely functionally correct in the C implemented
environment. Then, potentially, I could switch on bitmap implementation in Rust.
This is the vision of step-by-step implementation. And I completely OK with glue
code and inefficiency on the first steps because I need to prepare the file
system "foundation" and "walls". Also, I would like to manage the complexity of
implementation and bug fix. It means that I would like to isolate the bugs in
HFS/HFS+ layer. I can trust to C implementation of VFS but I cannot trust to
Rust implementation of VFS. So, I prefer to re-write HFS/HFS+ functionality in
Rust by using the C implemented environment at first. Because, from my point of
view, it is the way to manage complexity and to isolate bugs by HFS/HFS+ layer
only. And when everything will be in Rust, then it will be possible to switch on
complete Rust environment.

Thanks,
Slava.




[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux