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