2005-09-10 00:04:20 +04:00
/*
* V9FS VFS extensions .
*
* Copyright ( C ) 2004 by Eric Van Hensbergen < ericvh @ gmail . com >
* Copyright ( C ) 2002 by Ron Minnich < rminnich @ lanl . gov >
*
* This program is free software ; you can redistribute it and / or modify
2006-03-25 14:07:28 +03:00
* it under the terms of the GNU General Public License version 2
* as published by the Free Software Foundation .
2005-09-10 00:04:20 +04:00
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to :
* Free Software Foundation
* 51 Franklin Street , Fifth Floor
* Boston , MA 02111 - 1301 USA
*
*/
/* plan9 semantics are that created files are implicitly opened.
* But linux semantics are that you call create , then open .
* the plan9 approach is superior as it provides an atomic
* open .
* we track the create fid here . When the file is opened , if fidopen is
* non - zero , we use the fid and can skip some steps .
* there may be a better way to do this , but I don ' t know it .
* one BAD way is to clunk the fid on create , then open it again :
* you lose the atomicity of file open
*/
/* special case:
* unlink calls remove , which is an implicit clunk . So we have to track
* that kind of thing so that we don ' t try to clunk a dead fid .
*/
extern struct file_system_type v9fs_fs_type ;
2006-06-28 15:26:44 +04:00
extern const struct address_space_operations v9fs_addr_operations ;
2006-03-28 13:56:42 +04:00
extern const struct file_operations v9fs_file_operations ;
extern const struct file_operations v9fs_dir_operations ;
2005-09-10 00:04:20 +04:00
extern struct dentry_operations v9fs_dentry_operations ;
2007-02-11 22:21:39 +03:00
extern struct dentry_operations v9fs_cached_dentry_operations ;
2005-09-10 00:04:20 +04:00
struct inode * v9fs_get_inode ( struct super_block * sb , int mode ) ;
2007-07-11 02:57:28 +04:00
ino_t v9fs_qid2ino ( struct p9_qid * qid ) ;
2008-10-16 17:30:07 +04:00
void v9fs_stat2inode ( struct p9_wstat * , struct inode * , struct super_block * ) ;
2005-09-10 00:04:20 +04:00
int v9fs_dir_release ( struct inode * inode , struct file * filp ) ;
int v9fs_file_open ( struct inode * inode , struct file * file ) ;
2008-10-16 17:30:07 +04:00
void v9fs_inode2stat ( struct inode * inode , struct p9_wstat * stat ) ;
2005-09-10 00:04:20 +04:00
void v9fs_dentry_release ( struct dentry * ) ;
2008-06-25 02:39:39 +04:00
int v9fs_uflags2omode ( int uflags , int extended ) ;
2008-10-14 05:36:16 +04:00
ssize_t v9fs_file_readn ( struct file * , char * , char __user * , u32 , u64 ) ;