xref: /linux/fs/smb/client/export.c (revision b17ef04bf3a4346d66404454d6a646343ddc9749)
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 	.encode_fh = generic_encode_ino32_fh,
45 	.get_parent = cifs_get_parent,
46 /*
47  * Following export operations are mandatory for NFS export support:
48  *	.fh_to_dentry =
49  */
50 };
51 
52 #endif /* CONFIG_CIFS_NFSD_EXPORT */
53 
54