/* * Copyright (c) 2006,2007 The Regents of the University of Michigan. * All rights reserved. * * Andy Adamson <[email protected]> * Fred Isaman <[email protected]> * * permission is granted to use, copy, create derivative works and * redistribute this software and such derivative works for any purpose, * so long as the name of the university of michigan is not used in * any advertising or publicity pertaining to the use or distribution * of this software without specific, written prior authorization. if * the above copyright notice or any other identification of the * university of michigan is included in any copy of any portion of * this software, then the disclaimer below must also be included. * * this software is provided as is, without representation from the * university of michigan as to its fitness for any purpose, and without * warranty by the university of michigan of any kind, either express * or implied, including without limitation the implied warranties of * merchantability and fitness for a particular purpose. the regents * of the university of michigan shall not be liable for any damages, * including special, indirect, incidental, or consequential damages, * with respect to any claim arising out or in connection with the use * of the software, even if it has been or is hereafter advised of the * possibility of such damages. */ #include <linux/module.h> #include <linux/blkdev.h> #include "blocklayout.h" #define NFSDBG_FACILITY … static void nfs4_encode_simple(__be32 *p, struct pnfs_block_volume *b) { … } dev_t bl_resolve_deviceid(struct nfs_server *server, struct pnfs_block_volume *b, gfp_t gfp_mask) { … } static ssize_t bl_pipe_downcall(struct file *filp, const char __user *src, size_t mlen) { … } static void bl_pipe_destroy_msg(struct rpc_pipe_msg *msg) { … } static const struct rpc_pipe_ops bl_upcall_ops = …; static struct dentry *nfs4blocklayout_register_sb(struct super_block *sb, struct rpc_pipe *pipe) { … } static void nfs4blocklayout_unregister_sb(struct super_block *sb, struct rpc_pipe *pipe) { … } static int rpc_pipefs_event(struct notifier_block *nb, unsigned long event, void *ptr) { … } static struct notifier_block nfs4blocklayout_block = …; static struct dentry *nfs4blocklayout_register_net(struct net *net, struct rpc_pipe *pipe) { … } static void nfs4blocklayout_unregister_net(struct net *net, struct rpc_pipe *pipe) { … } static int nfs4blocklayout_net_init(struct net *net) { … } static void nfs4blocklayout_net_exit(struct net *net) { … } static struct pernet_operations nfs4blocklayout_net_ops = …; int __init bl_init_pipefs(void) { … } void bl_cleanup_pipefs(void) { … }