On Sun, Sep 19, 2021 at 01:35:23PM +0100, Richard W.M. Jones wrote:
Are there structures shared between ext2_fs handles?
Sadly, no.
I mean, if we had two concurrent threads using different ext2_fs
handles, but open on the same file, is that going to be a problem?
(It sounds like it would be, with conflicting access to the block
allocation bitmap and so on.)
Yes, there's going to be a problem.
If you have two separate ext2fs_fs handles (each opened via a separate
call to ext2fs_open), they will not share any structures, nor is there
any locking for any of the data structures. So that means you could
use a single ext2s_fs handle, and share it across threads --- but you
need to make sure that only one thread is using the handle at a time,
and you can't have two file handles open to the same inode, or read an
inode twice, and then modify one, write it back, and expect the other
inode will magically be updated --- because they won't be.
Fundamentally, libext2fs was not designed for concurrent operation.
I suppose you could use fuse2fs, and then having the clients access
the file system via the FUSE interface. That might be more efficient.
- Ted