xref: /openbmc/linux/fs/smb/client/export.c (revision 38c8a9a5)
1*38c8a9a5SSteve French // SPDX-License-Identifier: LGPL-2.1
2*38c8a9a5SSteve French /*
3*38c8a9a5SSteve French  *
4*38c8a9a5SSteve French  *   Copyright (C) International Business Machines  Corp., 2007
5*38c8a9a5SSteve French  *   Author(s): Steve French (sfrench@us.ibm.com)
6*38c8a9a5SSteve French  *
7*38c8a9a5SSteve French  *   Common Internet FileSystem (CIFS) client
8*38c8a9a5SSteve French  *
9*38c8a9a5SSteve French  *   Operations related to support for exporting files via NFSD
10*38c8a9a5SSteve French  *
11*38c8a9a5SSteve French  */
12*38c8a9a5SSteve French 
13*38c8a9a5SSteve French  /*
14*38c8a9a5SSteve French   * See Documentation/filesystems/nfs/exporting.rst
15*38c8a9a5SSteve French   * and examples in fs/exportfs
16*38c8a9a5SSteve French   *
17*38c8a9a5SSteve French   * Since cifs is a network file system, an "fsid" must be included for
18*38c8a9a5SSteve French   * any nfs exports file entries which refer to cifs paths.  In addition
19*38c8a9a5SSteve French   * the cifs mount must be mounted with the "serverino" option (ie use stable
20*38c8a9a5SSteve French   * server inode numbers instead of locally generated temporary ones).
21*38c8a9a5SSteve French   * Although cifs inodes do not use generation numbers (have generation number
22*38c8a9a5SSteve French   * of zero) - the inode number alone should be good enough for simple cases
23*38c8a9a5SSteve French   * in which users want to export cifs shares with NFS. The decode and encode
24*38c8a9a5SSteve French   * could be improved by using a new routine which expects 64 bit inode numbers
25*38c8a9a5SSteve French   * instead of the default 32 bit routines in fs/exportfs
26*38c8a9a5SSteve French   *
27*38c8a9a5SSteve French   */
28*38c8a9a5SSteve French 
29*38c8a9a5SSteve French #include <linux/fs.h>
30*38c8a9a5SSteve French #include <linux/exportfs.h>
31*38c8a9a5SSteve French #include "cifsglob.h"
32*38c8a9a5SSteve French #include "cifs_debug.h"
33*38c8a9a5SSteve French #include "cifsfs.h"
34*38c8a9a5SSteve French 
35*38c8a9a5SSteve French #ifdef CONFIG_CIFS_NFSD_EXPORT
cifs_get_parent(struct dentry * dentry)36*38c8a9a5SSteve French static struct dentry *cifs_get_parent(struct dentry *dentry)
37*38c8a9a5SSteve French {
38*38c8a9a5SSteve French 	/* BB need to add code here eventually to enable export via NFSD */
39*38c8a9a5SSteve French 	cifs_dbg(FYI, "get parent for %p\n", dentry);
40*38c8a9a5SSteve French 	return ERR_PTR(-EACCES);
41*38c8a9a5SSteve French }
42*38c8a9a5SSteve French 
43*38c8a9a5SSteve French const struct export_operations cifs_export_ops = {
44*38c8a9a5SSteve French 	.get_parent = cifs_get_parent,
45*38c8a9a5SSteve French /*	Following five export operations are unneeded so far and can default:
46*38c8a9a5SSteve French 	.get_dentry =
47*38c8a9a5SSteve French 	.get_name =
48*38c8a9a5SSteve French 	.find_exported_dentry =
49*38c8a9a5SSteve French 	.decode_fh =
50*38c8a9a5SSteve French 	.encode_fs =  */
51*38c8a9a5SSteve French };
52*38c8a9a5SSteve French 
53*38c8a9a5SSteve French #endif /* CONFIG_CIFS_NFSD_EXPORT */
54*38c8a9a5SSteve French 
55