[systemd-devel] About autofs: no handling of expire??

Stef Bon stefbon at gmail.com
Tue May 1 22:45:58 PDT 2012


Hi,

I've been looking into the code how systemd handles the automounting.

I've got two issues:

a. I've found the handling of the "missing" packet
(autofs_ptype_missing_direct), which triggers the
mounting. But I did not found the handling of the expire packet
(autofs_ptype_expire_direct). Is this on purpose?
I see a timeout set, so I guess it was the intention to handle the expire.

b. the packet read from the pipe is of type union
autofs_v5_packet_union which looks like:

union autofs_v5_packet_union {
        struct autofs_packet_hdr hdr;
        struct autofs_v5_packet v5_packet;
        autofs_packet_missing_indirect_t missing_indirect;
        autofs_packet_expire_indirect_t expire_indirect;
        autofs_packet_missing_direct_t missing_direct;
        autofs_packet_expire_direct_t expire_direct;
};

where autofs_v5_packet is:

struct autofs_v5_packet {
        struct autofs_packet_hdr hdr;
        autofs_wqt_t wait_queue_token;
        __u32 dev;
        __u64 ino;
        __u32 uid;
        __u32 gid;
        __u32 pid;
        __u32 tgid;
        __u32 len;
        char name[NAME_MAX+1];
};

now in the code of automount_fd_event, the selection is based upon
packet.hdr.type, and futher the fields
packet.v5_packet.pid are used. Now this while packet is an union: it's
used as hdr OR as autofs_v5_packet, not both at the same time.
It works, so here probably happens something strange: while using the
field packet.hdr, actually the field packet.v5_packet.hdr is used. Is
this correct?

Stef


More information about the systemd-devel mailing list