Skip to contentSkip to conversation

NLM - drop per fsid locks

PATCH In review Wendy Cheng 2 participants 3 messages Apr 5, 2007 – Apr 9, 2007

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/4 NLM - drop per fsid locks

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

-- Wendy
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 001_nlm_drop_l.patch
Type: text/x-patch
Size: 8959 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/cluster-devel/attachments/20070405/8cb075f0/attachment.bin>

#1 lore raw
Quoted 10 lines · Wendy Cheng

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.

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 it.

#2 lore raw
Quoted 14 lines · Christoph Hellwig
Quoted 11 lines · Wendy Cheng

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

Quoted 5 lines

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.

Quoted 5 lines

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 it.

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

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs