linux/fs/nfsd/vfs.h
<<
>>
Prefs
   1/*
   2 * Copyright (C) 1995-1997 Olaf Kirch <okir@monad.swb.de>
   3 */
   4
   5#ifndef LINUX_NFSD_VFS_H
   6#define LINUX_NFSD_VFS_H
   7
   8#include "nfsfh.h"
   9
  10/*
  11 * Flags for nfsd_permission
  12 */
  13#define NFSD_MAY_NOP            0
  14#define NFSD_MAY_EXEC           1 /* == MAY_EXEC */
  15#define NFSD_MAY_WRITE          2 /* == MAY_WRITE */
  16#define NFSD_MAY_READ           4 /* == MAY_READ */
  17#define NFSD_MAY_SATTR          8
  18#define NFSD_MAY_TRUNC          16
  19#define NFSD_MAY_LOCK           32
  20#define NFSD_MAY_OWNER_OVERRIDE 64
  21#define NFSD_MAY_LOCAL_ACCESS   128 /* IRIX doing local access check on device special file*/
  22#define NFSD_MAY_BYPASS_GSS_ON_ROOT 256
  23#define NFSD_MAY_NOT_BREAK_LEASE 512
  24
  25#define NFSD_MAY_CREATE         (NFSD_MAY_EXEC|NFSD_MAY_WRITE)
  26#define NFSD_MAY_REMOVE         (NFSD_MAY_EXEC|NFSD_MAY_WRITE|NFSD_MAY_TRUNC)
  27
  28/*
  29 * Callback function for readdir
  30 */
  31typedef int (*nfsd_dirop_t)(struct inode *, struct dentry *, int, int);
  32
  33/* nfsd/vfs.c */
  34int             fh_lock_parent(struct svc_fh *, struct dentry *);
  35int             nfsd_racache_init(int);
  36void            nfsd_racache_shutdown(void);
  37int             nfsd_cross_mnt(struct svc_rqst *rqstp, struct dentry **dpp,
  38                                struct svc_export **expp);
  39__be32          nfsd_lookup(struct svc_rqst *, struct svc_fh *,
  40                                const char *, unsigned int, struct svc_fh *);
  41__be32           nfsd_lookup_dentry(struct svc_rqst *, struct svc_fh *,
  42                                const char *, unsigned int,
  43                                struct svc_export **, struct dentry **);
  44__be32          nfsd_setattr(struct svc_rqst *, struct svc_fh *,
  45                                struct iattr *, int, time_t);
  46int nfsd_mountpoint(struct dentry *, struct svc_export *);
  47#ifdef CONFIG_NFSD_V4
  48__be32          nfsd4_set_nfs4_acl(struct svc_rqst *, struct svc_fh *,
  49                    struct nfs4_acl *);
  50int             nfsd4_get_nfs4_acl(struct svc_rqst *, struct dentry *, struct nfs4_acl **);
  51#endif /* CONFIG_NFSD_V4 */
  52__be32          nfsd_create(struct svc_rqst *, struct svc_fh *,
  53                                char *name, int len, struct iattr *attrs,
  54                                int type, dev_t rdev, struct svc_fh *res);
  55#ifdef CONFIG_NFSD_V3
  56__be32          nfsd_access(struct svc_rqst *, struct svc_fh *, u32 *, u32 *);
  57__be32          nfsd_create_v3(struct svc_rqst *, struct svc_fh *,
  58                                char *name, int len, struct iattr *attrs,
  59                                struct svc_fh *res, int createmode,
  60                                u32 *verifier, int *truncp, int *created);
  61__be32          nfsd_commit(struct svc_rqst *, struct svc_fh *,
  62                                loff_t, unsigned long);
  63#endif /* CONFIG_NFSD_V3 */
  64__be32          nfsd_open(struct svc_rqst *, struct svc_fh *, int,
  65                                int, struct file **);
  66void            nfsd_close(struct file *);
  67__be32          nfsd_read(struct svc_rqst *, struct svc_fh *,
  68                                loff_t, struct kvec *, int, unsigned long *);
  69__be32          nfsd_read_file(struct svc_rqst *, struct svc_fh *, struct file *,
  70                                loff_t, struct kvec *, int, unsigned long *);
  71__be32          nfsd_write(struct svc_rqst *, struct svc_fh *,struct file *,
  72                                loff_t, struct kvec *,int, unsigned long *, int *);
  73__be32          nfsd_readlink(struct svc_rqst *, struct svc_fh *,
  74                                char *, int *);
  75__be32          nfsd_symlink(struct svc_rqst *, struct svc_fh *,
  76                                char *name, int len, char *path, int plen,
  77                                struct svc_fh *res, struct iattr *);
  78__be32          nfsd_link(struct svc_rqst *, struct svc_fh *,
  79                                char *, int, struct svc_fh *);
  80__be32          nfsd_rename(struct svc_rqst *,
  81                                struct svc_fh *, char *, int,
  82                                struct svc_fh *, char *, int);
  83__be32          nfsd_remove(struct svc_rqst *,
  84                                struct svc_fh *, char *, int);
  85__be32          nfsd_unlink(struct svc_rqst *, struct svc_fh *, int type,
  86                                char *name, int len);
  87int             nfsd_truncate(struct svc_rqst *, struct svc_fh *,
  88                                unsigned long size);
  89__be32          nfsd_readdir(struct svc_rqst *, struct svc_fh *,
  90                             loff_t *, struct readdir_cd *, filldir_t);
  91__be32          nfsd_statfs(struct svc_rqst *, struct svc_fh *,
  92                                struct kstatfs *, int access);
  93
  94int             nfsd_notify_change(struct inode *, struct iattr *);
  95__be32          nfsd_permission(struct svc_rqst *, struct svc_export *,
  96                                struct dentry *, int);
  97int             nfsd_sync_dir(struct dentry *dp);
  98
  99#if defined(CONFIG_NFSD_V2_ACL) || defined(CONFIG_NFSD_V3_ACL)
 100struct posix_acl *nfsd_get_posix_acl(struct svc_fh *, int);
 101int nfsd_set_posix_acl(struct svc_fh *, int, struct posix_acl *);
 102#endif
 103
 104#endif /* LINUX_NFSD_VFS_H */
 105