[Dovecot] Unable to (un)subscribe mbox with AIX, NFS and netapp filer

Axel Luttgens AxelLuttgens at swing.be
Mon Jul 6 14:30:45 EEST 2009


Le 6 juil. 09 à 09:47, Ralf Becker a écrit :

> [...]
>
> Jul  6 08:14:32 trevi mail:err|error dovecot: IMAP(beckerr):
>  fchown(/u/f0/rzuser/beckerr/Mail/.subscriptions.lock, -1, -1)
>  failed: Invalid argument
>
> [...]
>
> The error just appears on NFS mounted shared and I'm not sure if
> AIX or netapp is the cause.

According to the posix specification, fchown may return EINVAL when  
the owner or group ID is not a value supported by the implementation,  
or when the fildes argument refers to a pipe or socket or an fattach()- 
ed STREAM and the implementation disallows execution of fchown() on a  
pipe.

Wouldn't it be worth to check what kind of entity gets created under  
your environment?
I ask because I wouldn't exclude without further investigations the  
possibility of encountering other side effects wrt files throughout  
the code.


> So to determine the real problem is
> not easy, but to fix it is:
>
> While uid and gid are both -1 the call could be suppressed, because
> nothing is really changed:
>
> --- ./lib/file-dotlock.c.org	2009-07-06 09:25:14.000000000 +0200
> +++ ./lib/file-dotlock.c	2009-07-06 09:24:48.000000000 +0200
> @@ -780,7 +780,7 @@
> 	fd = file_dotlock_open(set, path, flags, &dotlock);
> 	umask(old_mask);
>
> -	if (fd != -1) {
> +	if (fd != -1 && (uid != -1 || gid != -1)) {
> 		if (fchown(fd, uid, gid) < 0) {
> 			if (errno == EPERM && uid == (uid_t)-1) {
> 				i_error("%s", eperm_error_get_chgrp("fchown",

Alternatively, perhaps could you write a small c program so as to test  
a fchown(fd,-1,-1) operation on a "regular" file as see whether it  
fails or not.

HTH,
Axel


More information about the dovecot mailing list