Created attachment 82191
Source code to demonstrate the issue
Sorry if this bug is filed in the wrong place. Information on GUdev is sparse and as far as I can tell, systemd is the upstream.
Anyway, the g_udev_client_query_by_device_number function fails on directories that are in subvolumes. An example is a btrfs file system with two subvolumes, @ (mounted as root) and @home (mounted as /home). This also happens when using encrypted home directories.
Having a subvolume might not be the real reason it fails, but that is what seems to be triggering the issue.
To replicate, download the attached source code. Compile it with "gcc -Wall -o idnum idnum.c `pkg-config --cflags --libs glib-2.0 gio-2.0 gudev-1.0`".
When run on a plain ext4 volume, the output is this:
./idnum
Device id is 2065.
Whereas on btrfs the output is this:
./idnum
Device id is 25.
Could not get device from num.
Created attachment 82191
Source code to demonstrate the issue
Sorry if this bug is filed in the wrong place. Information on GUdev is sparse and as far as I can tell, systemd is the upstream.
Anyway, the g_udev_ client_ query_by_ device_ number function fails on directories that are in subvolumes. An example is a btrfs file system with two subvolumes, @ (mounted as root) and @home (mounted as /home). This also happens when using encrypted home directories.
Having a subvolume might not be the real reason it fails, but that is what seems to be triggering the issue.
To replicate, download the attached source code. Compile it with "gcc -Wall -o idnum idnum.c `pkg-config --cflags --libs glib-2.0 gio-2.0 gudev-1.0`".
When run on a plain ext4 volume, the output is this:
./idnum
Device id is 2065.
Whereas on btrfs the output is this:
./idnum
Device id is 25.
Could not get device from num.
Originally filed here: https:/ /bugs.launchpad .net/ubuntu/ +source/ systemd/ +bug/1197796