xref: /openbmc/linux/fs/nfs/nfs42.h (revision 0491567b51efeca807da1125a1a0d5193875e286)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
21c6dcbe5SAnna Schumaker /*
31c6dcbe5SAnna Schumaker  * Copyright (c) 2014 Anna Schumaker <Anna.Schumaker@Netapp.com>
41c6dcbe5SAnna Schumaker  */
51c6dcbe5SAnna Schumaker 
61c6dcbe5SAnna Schumaker #ifndef __LINUX_FS_NFS_NFS4_2_H
71c6dcbe5SAnna Schumaker #define __LINUX_FS_NFS_NFS4_2_H
81c6dcbe5SAnna Schumaker 
9be3a5d23STrond Myklebust /*
10be3a5d23STrond Myklebust  * FIXME:  four LAYOUTSTATS calls per compound at most! Do we need to support
11be3a5d23STrond Myklebust  * more? Need to consider not to pre-alloc too much for a compound.
12be3a5d23STrond Myklebust  */
13be3a5d23STrond Myklebust #define PNFS_LAYOUTSTATS_MAXDEV (4)
14be3a5d23STrond Myklebust 
151c6dcbe5SAnna Schumaker /* nfs4.2proc.c */
16*0491567bSOlga Kornievskaia #ifdef CONFIG_NFS_V4_2
17f4ac1674SAnna Schumaker int nfs42_proc_allocate(struct file *, loff_t, loff_t);
182e72448bSAnna Schumaker ssize_t nfs42_proc_copy(struct file *, loff_t, struct file *, loff_t, size_t);
19624bd5b7SAnna Schumaker int nfs42_proc_deallocate(struct file *, loff_t, loff_t);
201c6dcbe5SAnna Schumaker loff_t nfs42_proc_llseek(struct file *, loff_t, int);
21be3a5d23STrond Myklebust int nfs42_proc_layoutstats_generic(struct nfs_server *,
22be3a5d23STrond Myklebust 				   struct nfs42_layoutstat_data *);
23e5341f3aSPeng Tao int nfs42_proc_clone(struct file *, struct file *, loff_t, loff_t, loff_t);
243eb86093STrond Myklebust int nfs42_proc_layouterror(struct pnfs_layout_segment *lseg,
253eb86093STrond Myklebust 			   const struct nfs42_layout_error *errors,
263eb86093STrond Myklebust 			   size_t n);
27*0491567bSOlga Kornievskaia int nfs42_proc_copy_notify(struct file *, struct file *,
28*0491567bSOlga Kornievskaia 			   struct nfs42_copy_notify_res *);
29*0491567bSOlga Kornievskaia static inline bool nfs42_files_from_same_server(struct file *in,
30*0491567bSOlga Kornievskaia 						struct file *out)
31*0491567bSOlga Kornievskaia {
32*0491567bSOlga Kornievskaia 	struct nfs_client *c_in = (NFS_SERVER(file_inode(in)))->nfs_client;
33*0491567bSOlga Kornievskaia 	struct nfs_client *c_out = (NFS_SERVER(file_inode(out)))->nfs_client;
341c6dcbe5SAnna Schumaker 
35*0491567bSOlga Kornievskaia 	return nfs4_check_serverowner_major_id(c_in->cl_serverowner,
36*0491567bSOlga Kornievskaia 					       c_out->cl_serverowner);
37*0491567bSOlga Kornievskaia }
38*0491567bSOlga Kornievskaia #endif /* CONFIG_NFS_V4_2 */
391c6dcbe5SAnna Schumaker #endif /* __LINUX_FS_NFS_NFS4_2_H */
40