On Monday January 7, [EMAIL PROTECTED] wrote:
> We've implemented two new NFSD procfs files:
>
> o /proc/fs/nfsd/unlock_ip
> o /proc/fs/nfsd/unlock_filesystem
>
> They are intended to allow admin or user mode script to release NLM
> locks based on either a path name or a server in-bound ip address (ipv4
> for now)
> as;
>
> shell> echo 10.1.1.2 > /proc/fs/nfsd/unlock_ip
> shell> echo /mnt/sfs1 > /proc/fs/nfsd/unlock_filesystem
I'm happy with this interface and the code looks credible, so
Acked-by: NeilBrown <[EMAIL PROTECTED]>
however......
> --- linux-o/fs/nfsd/nfsctl.c 2008-01-04 10:01:08.000000000 -0500
> +++ linux/fs/nfsd/nfsctl.c 2008-01-06 15:27:34.000000000 -0500
> @@ -288,6 +295,56 @@ static ssize_t write_getfd(struct file *
> return err;
> }
>
> +extern __u32 in_aton(const char *str);
Bad. It is "__be32" in linux/inet.h, and the difference an be
important.
Can you just #include <linux/inet.h> ???
> +
> +static
> +ssize_t failover_parse(int where, struct file *file, char *buf, size_t size)
> +{
> + char *fo_path, *mesg;
> + __be32 server_ip[4];
Why '4' ???
Also, fo_path is only sometimes a path, so the name choice could be
confusing. You use "data" in the formal parameters for nfsd_fo_cmd,
which is more idiomatic at least.
Maybe we should have a
union unlock_args {
char *path;
__be32 IPv4;
};
and pass around a pointer to such a union?
If you don't like that I would be happy with a 'void*', but not with a
'char *' called path.
> @@ -717,7 +776,6 @@ static void __exit exit_nfsd(void)
> nfsd4_free_slabs();
> unregister_filesystem(&nfsd_fs_type);
> }
> -
> MODULE_AUTHOR("Olaf Kirch <[EMAIL PROTECTED]>");
> MODULE_LICENSE("GPL");
> module_init(init_nfsd)
Any good reason for removing this blank line?
> +int nlmsvc_fo_match(struct nlm_host *dummy1, struct nlm_host *dummy2)
> +{
> + return 1;
> +}
White space damage. Did you run checkpatch.pl??
> +int
> +nlmsvc_fo_cmd(int cmd, void *datap, int grace_time)
> +{
> + nlm_fo_cmd fo_cmd;
> + int rc=-EINVAL;
> +
> + fo_printk("lockd: nlmsvc_fo_cmd enter, cmd=%d, datap=0x%p, gp=%d\n",
> + cmd, datap, grace_time);
> +
> + fo_cmd.cmd = cmd;
> + fo_cmd.stat = 0;
> + fo_cmd.gp = 0;
> + fo_cmd.datap = datap;
> +
> + /* "if" place holder for NFSD_FO_RESUME */
> + {
> + /* fo_start */
> + rc = nlm_traverse_files((struct nlm_host*) &fo_cmd,
> + nlmsvc_fo_match);
> + fo_printk("nlmsvc_fo_cmd rc=%d, stat=%d\n", rc, fo_cmd.stat);
> + }
> +
> + return rc;
> +}
> +
> +EXPORT_SYMBOL(nlmsvc_fo_cmd);
I think today's convention it to not have a blank line before
EXPORT_SYMBOL. checkpatch.pl should pick this up for you.
> --- linux-o/include/linux/lockd/lockd.h 2008-01-04 10:01:08.000000000
> -0500
> +++ linux/include/linux/lockd/lockd.h 2008-01-06 15:14:55.000000000 -0500
> @@ -39,7 +39,7 @@
> struct nlm_host {
> struct hlist_node h_hash; /* doubly linked list */
> struct sockaddr_in h_addr; /* peer address */
> - struct sockaddr_in h_saddr; /* our address (optional) */
> + struct sockaddr_in h_saddr; /* our address (optional) */
> struct rpc_clnt * h_rpcclnt; /* RPC client to talk to peer */
> char * h_name; /* remote hostname */
> u32 h_version; /* interface version */
This change is purely white-space breakage.
> @@ -214,6 +215,17 @@ void nlmsvc_mark_resources(void);
> void nlmsvc_free_host_resources(struct nlm_host *);
> void nlmsvc_invalidate_all(void);
>
> +/* cluster failover support */
> +
> +typedef struct {
> + int cmd;
> + int stat;
> + int gp;
> + void *datap;
> +} nlm_fo_cmd;
gp??? I guess that means 'grace period'. It isn't used at all in
this patch. Ideally it should only be introduce in the patch which
uses it, but it definitely needs a better name - and preferably a
comment.
NeilBrown
-
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html