root/fs/cifs/cifsfs.h

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

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. cifs_uniqueid_to_ino_t
  2. cifs_set_time
  3. cifs_get_time

   1 /*
   2  *   fs/cifs/cifsfs.h
   3  *
   4  *   Copyright (c) International Business Machines  Corp., 2002, 2007
   5  *   Author(s): Steve French (sfrench@us.ibm.com)
   6  *
   7  *   This library is free software; you can redistribute it and/or modify
   8  *   it under the terms of the GNU Lesser General Public License as published
   9  *   by the Free Software Foundation; either version 2.1 of the License, or
  10  *   (at your option) any later version.
  11  *
  12  *   This library is distributed in the hope that it will be useful,
  13  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  14  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
  15  *   the GNU Lesser General Public License for more details.
  16  *
  17  *   You should have received a copy of the GNU Lesser General Public License
  18  *   along with this library; if not, write to the Free Software
  19  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  20  */
  21 
  22 #ifndef _CIFSFS_H
  23 #define _CIFSFS_H
  24 
  25 #include <linux/hash.h>
  26 
  27 #define ROOT_I 2
  28 
  29 /*
  30  * ino_t is 32-bits on 32-bit arch. We have to squash the 64-bit value down
  31  * so that it will fit. We use hash_64 to convert the value to 31 bits, and
  32  * then add 1, to ensure that we don't end up with a 0 as the value.
  33  */
  34 static inline ino_t
  35 cifs_uniqueid_to_ino_t(u64 fileid)
  36 {
  37         if ((sizeof(ino_t)) < (sizeof(u64)))
  38                 return (ino_t)hash_64(fileid, (sizeof(ino_t) * 8) - 1) + 1;
  39 
  40         return (ino_t)fileid;
  41 
  42 }
  43 
  44 static inline void cifs_set_time(struct dentry *dentry, unsigned long time)
  45 {
  46         dentry->d_fsdata = (void *) time;
  47 }
  48 
  49 static inline unsigned long cifs_get_time(struct dentry *dentry)
  50 {
  51         return (unsigned long) dentry->d_fsdata;
  52 }
  53 
  54 extern struct file_system_type cifs_fs_type;
  55 extern const struct address_space_operations cifs_addr_ops;
  56 extern const struct address_space_operations cifs_addr_ops_smallbuf;
  57 
  58 /* Functions related to super block operations */
  59 extern void cifs_sb_active(struct super_block *sb);
  60 extern void cifs_sb_deactive(struct super_block *sb);
  61 
  62 /* Functions related to inodes */
  63 extern const struct inode_operations cifs_dir_inode_ops;
  64 extern struct inode *cifs_root_iget(struct super_block *);
  65 extern int cifs_create(struct inode *, struct dentry *, umode_t,
  66                        bool excl);
  67 extern int cifs_atomic_open(struct inode *, struct dentry *,
  68                             struct file *, unsigned, umode_t);
  69 extern struct dentry *cifs_lookup(struct inode *, struct dentry *,
  70                                   unsigned int);
  71 extern int cifs_unlink(struct inode *dir, struct dentry *dentry);
  72 extern int cifs_hardlink(struct dentry *, struct inode *, struct dentry *);
  73 extern int cifs_mknod(struct inode *, struct dentry *, umode_t, dev_t);
  74 extern int cifs_mkdir(struct inode *, struct dentry *, umode_t);
  75 extern int cifs_rmdir(struct inode *, struct dentry *);
  76 extern int cifs_rename2(struct inode *, struct dentry *, struct inode *,
  77                         struct dentry *, unsigned int);
  78 extern int cifs_revalidate_file_attr(struct file *filp);
  79 extern int cifs_revalidate_dentry_attr(struct dentry *);
  80 extern int cifs_revalidate_file(struct file *filp);
  81 extern int cifs_revalidate_dentry(struct dentry *);
  82 extern int cifs_invalidate_mapping(struct inode *inode);
  83 extern int cifs_revalidate_mapping(struct inode *inode);
  84 extern int cifs_zap_mapping(struct inode *inode);
  85 extern int cifs_getattr(const struct path *, struct kstat *, u32, unsigned int);
  86 extern int cifs_setattr(struct dentry *, struct iattr *);
  87 extern int cifs_fiemap(struct inode *, struct fiemap_extent_info *, u64 start,
  88                        u64 len);
  89 
  90 extern const struct inode_operations cifs_file_inode_ops;
  91 extern const struct inode_operations cifs_symlink_inode_ops;
  92 extern const struct inode_operations cifs_dfs_referral_inode_operations;
  93 
  94 
  95 /* Functions related to files and directories */
  96 extern const struct file_operations cifs_file_ops;
  97 extern const struct file_operations cifs_file_direct_ops; /* if directio mnt */
  98 extern const struct file_operations cifs_file_strict_ops; /* if strictio mnt */
  99 extern const struct file_operations cifs_file_nobrl_ops; /* no brlocks */
 100 extern const struct file_operations cifs_file_direct_nobrl_ops;
 101 extern const struct file_operations cifs_file_strict_nobrl_ops;
 102 extern int cifs_open(struct inode *inode, struct file *file);
 103 extern int cifs_close(struct inode *inode, struct file *file);
 104 extern int cifs_closedir(struct inode *inode, struct file *file);
 105 extern ssize_t cifs_user_readv(struct kiocb *iocb, struct iov_iter *to);
 106 extern ssize_t cifs_direct_readv(struct kiocb *iocb, struct iov_iter *to);
 107 extern ssize_t cifs_strict_readv(struct kiocb *iocb, struct iov_iter *to);
 108 extern ssize_t cifs_user_writev(struct kiocb *iocb, struct iov_iter *from);
 109 extern ssize_t cifs_direct_writev(struct kiocb *iocb, struct iov_iter *from);
 110 extern ssize_t cifs_strict_writev(struct kiocb *iocb, struct iov_iter *from);
 111 extern int cifs_lock(struct file *, int, struct file_lock *);
 112 extern int cifs_fsync(struct file *, loff_t, loff_t, int);
 113 extern int cifs_strict_fsync(struct file *, loff_t, loff_t, int);
 114 extern int cifs_flush(struct file *, fl_owner_t id);
 115 extern int cifs_file_mmap(struct file * , struct vm_area_struct *);
 116 extern int cifs_file_strict_mmap(struct file * , struct vm_area_struct *);
 117 extern const struct file_operations cifs_dir_ops;
 118 extern int cifs_dir_open(struct inode *inode, struct file *file);
 119 extern int cifs_readdir(struct file *file, struct dir_context *ctx);
 120 
 121 /* Functions related to dir entries */
 122 extern const struct dentry_operations cifs_dentry_ops;
 123 extern const struct dentry_operations cifs_ci_dentry_ops;
 124 
 125 #ifdef CONFIG_CIFS_DFS_UPCALL
 126 extern struct vfsmount *cifs_dfs_d_automount(struct path *path);
 127 #else
 128 #define cifs_dfs_d_automount NULL
 129 #endif
 130 
 131 /* Functions related to symlinks */
 132 extern const char *cifs_get_link(struct dentry *, struct inode *,
 133                         struct delayed_call *);
 134 extern int cifs_symlink(struct inode *inode, struct dentry *direntry,
 135                         const char *symname);
 136 
 137 #ifdef CONFIG_CIFS_XATTR
 138 extern const struct xattr_handler *cifs_xattr_handlers[];
 139 extern ssize_t  cifs_listxattr(struct dentry *, char *, size_t);
 140 #else
 141 # define cifs_xattr_handlers NULL
 142 # define cifs_listxattr NULL
 143 #endif
 144 
 145 extern ssize_t cifs_file_copychunk_range(unsigned int xid,
 146                                         struct file *src_file, loff_t off,
 147                                         struct file *dst_file, loff_t destoff,
 148                                         size_t len, unsigned int flags);
 149 
 150 extern long cifs_ioctl(struct file *filep, unsigned int cmd, unsigned long arg);
 151 #ifdef CONFIG_CIFS_NFSD_EXPORT
 152 extern const struct export_operations cifs_export_ops;
 153 #endif /* CONFIG_CIFS_NFSD_EXPORT */
 154 
 155 #define CIFS_VERSION   "2.23"
 156 #endif                          /* _CIFSFS_H */

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