root/fs/nfs/nfs4getroot.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. nfs4_get_rootfh

   1 // SPDX-License-Identifier: GPL-2.0
   2 /*
   3 * Copyright (C) 2006 Red Hat, Inc. All Rights Reserved.
   4 * Written by David Howells (dhowells@redhat.com)
   5 */
   6 
   7 #include <linux/nfs_fs.h>
   8 #include "nfs4_fs.h"
   9 #include "internal.h"
  10 
  11 #define NFSDBG_FACILITY         NFSDBG_CLIENT
  12 
  13 int nfs4_get_rootfh(struct nfs_server *server, struct nfs_fh *mntfh, bool auth_probe)
  14 {
  15         struct nfs_fsinfo fsinfo;
  16         int ret = -ENOMEM;
  17 
  18         fsinfo.fattr = nfs_alloc_fattr();
  19         if (fsinfo.fattr == NULL)
  20                 goto out;
  21 
  22         /* Start by getting the root filehandle from the server */
  23         ret = nfs4_proc_get_rootfh(server, mntfh, &fsinfo, auth_probe);
  24         if (ret < 0) {
  25                 dprintk("nfs4_get_rootfh: getroot error = %d\n", -ret);
  26                 goto out;
  27         }
  28 
  29         if (!(fsinfo.fattr->valid & NFS_ATTR_FATTR_TYPE)
  30                         || !S_ISDIR(fsinfo.fattr->mode)) {
  31                 printk(KERN_ERR "nfs4_get_rootfh:"
  32                        " getroot encountered non-directory\n");
  33                 ret = -ENOTDIR;
  34                 goto out;
  35         }
  36 
  37         memcpy(&server->fsid, &fsinfo.fattr->fsid, sizeof(server->fsid));
  38 out:
  39         nfs_free_fattr(fsinfo.fattr);
  40         return ret;
  41 }

/* [<][>][^][v][top][bottom][index][help] */