-
Notifications
You must be signed in to change notification settings - Fork 137
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unable to mount btrfs filesystems spread across more than one partition with lklfuse #518
Comments
This requires support for adding multiple disks. Then using the physical disk and multiple partitions should work. I’ll look into more details at this tomorrow. Could you please share instructions on how to get btrfs split across multiple partitions? |
Assuming you have btrfsprogs, with an existing btrfs filesystem mounted at /mnt, you can add a new device as-is with Thanks! |
Is there a plan for implementing this? |
One option for adding devices to an existing lklfuse process at runtime is a FUSE xattr hack, e.g.:
It might then also be possible to forward |
I have been experimenting with lkl and btrfs and I found that the From there I discovered that lklfuse does not implement ioctl. I thought that there might be a simple way to implement I think that ioctl in lklfuse can be achieved by implementing I am not an expert on fuse or the kernel so I may be missing something. I am going to try and get ioctl working in lklfuse well enough that |
I haven't had time to look into this much recently but I want to provide a quick update. I did finally get ioctl to start to work with lklfuse. My initial assessment of needing 2 pointers was incorrect; only the I then ran into an issue where lkl stored a file handle directly in the I dug into this a little bit but I did not get very far. Essentially there is an ioctl command, To get this to work on the diff --git a/common/open-utils.c b/common/open-utils.c
index 8490be4a..448f3154 100644
--- a/common/open-utils.c
+++ b/common/open-utils.c
@@ -209,7 +209,7 @@ int btrfs_open_path(const char *path, bool read_write, bool dir_only)
return -errno;
}
- if (stfs.f_type != BTRFS_SUPER_MAGIC) {
+ if (stfs.f_type != FUSE_SUPER_MAGIC) {
error("not a btrfs filesystem: %s", path);
return -EINVAL;
} |
My example has three partitions. Passing partition 1 gives "BTRFS error (device vda1): devid 2 uuid is missing". Similar for partitions 2 and 3, but "devid 1".
All these devices are on one physical disk, but passing the full disk to lklfuse obviously won't work, and I'm having trouble how to wrangle the code to find that agreeable
The text was updated successfully, but these errors were encountered: