Re: [PATCH] fix posix lock on NFS

From: Peter Staubach
Date: Tue Jan 03 2006 - 15:08:19 EST


Matthew Wilcox wrote:

On Tue, Jan 03, 2006 at 02:39:24PM -0500, Peter Staubach wrote:


/* No mandatory locks over NFS */
- if ((inode->i_mode & (S_ISGID | S_IXGRP)) == S_ISGID)
+ if ((inode->i_mode & (S_ISGID | S_IXGRP)) == S_ISGID &&
+ fl->fl_type != F_UNLCK)


Just out of curiosity, what is this if() statement intended to protect?
For locking purposes, why would the client care if the file has the
mandatory lock bits set?



Mandatory locks aren't mandatory for other clients.



So?

I guess that I don't understand this response.

The server is responsible for keeping itself from attempting to access
a mandatory lock file. The client is not responsible for doing so and
trying to help the server is kind of a waste of time, mostly.

The mandatory lock mode bits really only come into play when attempting
to read or write the file. In this case, the system will automatically
try to take a lock for the process, if that process does not already
have a lock. The server should prevent itself from trying to access
files like this in order to avoid DoS attacks.

The NFS client does not support mandatory locking, mostly due to the
possibility of DoS attacks and also due to the locking and NFS protocols
not being sufficiently aware of each other. NFSv4 can be used to address
this latter problem, but probably not the former.

So, why deny lock requests for such files? Especially on the client?

Thanx...

ps
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/