// SPDX-License-Identifier: GPL-2.0-only/* * linux/fs/nfs/super.c * * Copyright (C) 1992 Rick Sladkey * * nfs superblock handling functions * * Modularised by Alan Cox <alan@lxorguk.ukuu.org.uk>, while hacking some * experimental NFS changes. Modularisation taken straight from SYS5 fs. * * Change to nfs_read_super() to permit NFS mounts to multi-homed hosts. * J.S.Peatfield@damtp.cam.ac.uk * * Split from inode.c by David Howells <dhowells@redhat.com> * * - superblocks are indexed on server only - all inodes, dentries, etc. associated with a * particular server are held in the same superblock * - NFS superblocks can have several effective roots to the dentry tree * - directory type roots are spliced into the tree when a path from one root reaches the root * of another (see nfs_lookup()) */#include<linux/module.h>#include<linux/init.h>#include<linux/time.h>#include<linux/kernel.h>#include<linux/mm.h>#include<linux/string.h>#include<linux/stat.h>#include<linux/errno.h>#include<linux/unistd.h>#include<linux/sunrpc/clnt.h>#include<linux/sunrpc/addr.h>#include<linux/sunrpc/stats.h>#include<linux/sunrpc/metrics.h>#include<linux/sunrpc/xprtsock.h>#include<linux/sunrpc/xprtrdma.h>#include<linux/nfs_fs.h>#include<linux/nfs_mount.h>#include<linux/nfs4_mount.h>#include<linux/lockd/bind.h>#include<linux/seq_file.h>#include<linux/mount.h>#include<linux/namei.h>#include<linux/vfs.h>#include<linux/inet.h>#include<linux/in6.h>#include<linux/slab.h>#include<net/ipv6.h>#include<linux/netdevice.h>#include<linux/nfs_xdr.h>#include<linux/magic.h>#include<linux/parser.h>#include<linux/nsproxy.h>#include<linux/rcupdate.h>#include<linux/uaccess.h>#include<linux/nfs_ssc.h>#include<uapi/linux/tls.h>#include"nfs4_fs.h"#include"callback.h"#include"delegation.h"#include"iostat.h"#include"internal.h"#include"fscache.h"#include"nfs4session.h"#include"pnfs.h"#include"nfs.h"#include"netns.h"#include"sysfs.h"#define NFSDBG_FACILITY NFSDBG_VFS