1 /* 2 * V9FS VFS extensions. 3 * 4 * Copyright (C) 2004 by Eric Van Hensbergen <ericvh@gmail.com> 5 * Copyright (C) 2002 by Ron Minnich <rminnich@lanl.gov> 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 2 of the License, or 10 * (at your option) any later version. 11 * 12 * This program 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 the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to: 19 * Free Software Foundation 20 * 51 Franklin Street, Fifth Floor 21 * Boston, MA 02111-1301 USA 22 * 23 */ 24 25 /* plan9 semantics are that created files are implicitly opened. 26 * But linux semantics are that you call create, then open. 27 * the plan9 approach is superior as it provides an atomic 28 * open. 29 * we track the create fid here. When the file is opened, if fidopen is 30 * non-zero, we use the fid and can skip some steps. 31 * there may be a better way to do this, but I don't know it. 32 * one BAD way is to clunk the fid on create, then open it again: 33 * you lose the atomicity of file open 34 */ 35 36 /* special case: 37 * unlink calls remove, which is an implicit clunk. So we have to track 38 * that kind of thing so that we don't try to clunk a dead fid. 39 */ 40 41 extern struct file_system_type v9fs_fs_type; 42 extern struct file_operations v9fs_file_operations; 43 extern struct file_operations v9fs_dir_operations; 44 extern struct dentry_operations v9fs_dentry_operations; 45 46 struct inode *v9fs_get_inode(struct super_block *sb, int mode); 47 ino_t v9fs_qid2ino(struct v9fs_qid *qid); 48 void v9fs_stat2inode(struct v9fs_stat *, struct inode *, struct super_block *); 49 int v9fs_dir_release(struct inode *inode, struct file *filp); 50 int v9fs_file_open(struct inode *inode, struct file *file); 51 void v9fs_inode2stat(struct inode *inode, struct v9fs_stat *stat); 52 void v9fs_dentry_release(struct dentry *); 53