[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[Cluster-devel] Re: [NFS] [PATCH 1/4 Revised] NLM - drop per fsid locks

Christoph Hellwig wrote:
On Thu, Apr 05, 2007 at 05:51:28PM -0400, Wendy Cheng wrote:
By writing exported filesytem id into /proc/fs/nfsd/nlm_unlock, this patch walks thru lockd's global nlm_files list to release all the locks associated with the particular id. It is used to enable NFS lock failover with active-active clustered servers.

Relevant steps:
1) Exports filesystem with "fsid" option as:
 /etc/exports entry> /mnt/shared/exports *(fsid=1234,sync,rw)
2) Drops locks based on fsid by:
 shell> echo 1234 > /proc/fs/nfsd/nlm_unlock

This is a very awkward API.  Dropping locks should support uuid or
dev_t based exports aswell.  Also it would be nice if you we had
a more general push api for changes to filesystem state, that works
on a similar basis as getting information from /etc/exports.
These can be added as future enhancements. But be aware that:
1. The "dev_t" value may be an obvious thing for a kernel developer but not necessarily for admin(s) (human operator) or cluster script (that has to use extra steps to obtain it). 2. Device major and minor numbers can change between different servers (shared storage case) or between reboots. The "fsid" approach should be encouraged. 3. UUID is tied to disk partitions - an all-or-nothing approach, comparing to fsid that would allow cluster filesystem doing its load balancing (by
exporting different directories from different nodes)

On the other hand, lock dropping based on "uuid" or "dev_t" may be useful in a single server case though.

And please inline your patches into the mail I send, attaching them
makes it really hard to quote it in mail replies or even to simply read
I normally don't do much development works for community versions of linux kernel. Some of the "convention" is not clear to me. Will do it next time. But these patches tend to be quite large (in terms of line count).

-- Wendy

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]