Replies: 6 comments 3 replies
-
When you receive the callback, what is the result and error? Internally UDisks is built on top of libudev. We haven't tested any replacements. Historically it was running fine with eudev as it was essentially just a fork of old udev. Also, udisks heavily depends on synthetic uevent tagging and that all the extra arguments are properly propagated back through libudev. |
Beta Was this translation helpful? Give feedback.
-
Thanks for your reply, tbzatek. Yes, internally UDisk is built on top of I was aware of the heavy dependency on synthetic uevent tagging since kernel-4.13 because a couple of days ago I read the following article that explains it in detail: https://storageapis.wordpress.com/2020/04/09/the-road-to-udisks-2-9-0. Indeed, today I've found a function called Therefore, we have a new device manager working fine with udisks2 from now on, and you can tag this discussion as SOLVED. Thank yo so much! |
Beta Was this translation helpful? Give feedback.
-
In fact, you're breaking needed functionality this way. The synthetic uevent tagging is there for a reason. If you talk about ABI, it's not just API and its binary form. It's the expected/documented behaviour and order of events for example. This kind of missing functionality should be implemented by vdev. |
Beta Was this translation helpful? Give feedback.
-
I understand... You are tagging the user event in the callback
where:
following the format Eudev does receive this change from netlink, but vdev somehow ends up losing it. |
Beta Was this translation helpful? Give feedback.
-
The solution won't be very difficult. I can see these synthetic variables when running vdev in debug mode: ( ... preceding output snipped... ) |
Beta Was this translation helpful? Give feedback.
-
I've just fixed the issue doing some minor changes in the vdev helpers. Thanks. |
Beta Was this translation helpful? Give feedback.
-
Hi all,
I'm trying to integrate udisks with vdev, a device manager developed by Jude Nelson that works in combination with libudev-compat (as a replacement for libudev). It happens that when I run udiskctl devices are immediately mounted/unmounted; however, I get a delay in the
g_dbus_proxy_call
because (for some unknown reason) the callbackudisks_filesystem_call_mount_finish
is invoked inudisks-generated.c
once the timeout (~25 sec) has expired.As explained in the link below:
https://www.gnuinos.org/libudev-compat
libudev-compat removes the netlink connection to udevd in favor of creating and watching a
per-process
specific directory located in the /dev filesystem directly. I've verified that the libudev clients are receiving the udev_devices as expected.It's worth to clarify that, if I run the udevadm monitor during the process (although udevd isn't installed, some features of udevadm still work) I get the same result compared to udev/eudev. So, apparently everything is working fine except for the dbus proxy delay.
On the other hand, the aforementioned delay occurs in the case of asynchronous dbus method calls as well. Therefore, I have replaced the use of
gvfs_udisks2_volume_mount
in gvfs with another tool as a temporary workaround .You can test this behaviour in the iso images of gnuinos https://www.gnuinos.org/mirror/daedalus, but don't use the volume manager of thunar because, as I already explained above, gvfs in gnuinos doesn't use udisks so far. For testing purposes, use synchorouns method calls via udisksctl instead.
Any hints about how to solve this delay?
Thanks in advance,
Aitor.
Beta Was this translation helpful? Give feedback.
All reactions