[Dovecot] Small problem with src/lib/mountpoint.c [now with patch attached!]

Mike Brudenell pmb1 at york.ac.uk
Wed Jul 18 13:04:57 EEST 2007


Hi Timo, et al -

On 17 Jul 2007, at 18:12, Timo Sirainen wrote:

> On 17.7.2007, at 13.55, Mike Brudenell wrote:
>
>> auto_direct     /mailstore/messages/p   autofs   
>> direct,ignore,dev=4740014       1184648400
>> crypt2.york.ac.uk:/vol/vol9/p   /mailstore/messages/p   nfs      
>> proto=tcp,xattr,dev=4700386     1184668792
>>
>> Although there are two entries they have different device  
>> numbers.  The mountpoint_get() function attempts to guard against  
>> this by checking the device number obtained matches that of the  
>> path being located.
>
> What do you mean different device numbers? Both have the same mount  
> path, so how can they be different?

I'm afraid I don't understand the innards of the automounter.  All I  
can say is what I see...

We use the automounter extensively as it gives central management for  
shares and saves having to edit /etc/vfstab files on umpteen machines  
all over the place.

A host making use of the automounter has entries in the /etc/mnttab  
for all the filestores available to it TO BE mounted, even when they  
AREN'T ACTUALLY mounted at the moment.

When something access a file or directory in the filestore the  
automounter leaps in and furtively mounts the filestore before the  
granting the access.  This results in a SECOND entry for that  
filestore in the /etc/mnttab file, and has the same mount point as  
the first entry.

The two entries have different "dev=NNNNN" values in their options  
fields to distinguish them.  The thing I find confusing/surprising is  
that:

1.  When I visually inspect the contents of /etc/mnttab the two  
entries for
     /mailstore/messages/p have DIFFERENT "dev=NNNNN" entries, but

2.  When I put debug logging into Dovecot's loop that iterates  
through the
     /etc/mnttab entries using getmntent() both entries come through  
with the
     SAME "dev=NNNNN" value ... the first (autofs) entry is returned  
with the
     device number from the second (real) mount's entry in the file.

     If the different (unique) device numbers were being yielded by  
getmntent()
     then there wouldn't be a problem: Dovecot is checking these and  
would
     skip the first (autofs) entry as the number was wrong.

I'll do some testing using a minimal test program to check this  
happens then.

Cheers,
Mike B-)

-- 
The Computing Service, University of York, Heslington, York Yo10 5DD, UK
Tel:+44-1904-433811  FAX:+44-1904-433740

* Unsolicited commercial e-mail is NOT welcome at this e-mail address. *




More information about the dovecot mailing list