summaryrefslogtreecommitdiffstats
path: root/fs/ceph/super.h
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2012-07-31 11:27:36 -0700
committerSage Weil <sage@inktank.com>2012-08-02 09:11:19 -0700
commit5ef50c3bec20060bc114f62d6503c5d86d70bdd7 (patch)
tree0777f7c9bef358fe7778e11874a6a750e0d2ceab /fs/ceph/super.h
parent1a9b4993b70fb1884716902774dc9025b457760d (diff)
downloadlinux-5ef50c3bec20060bc114f62d6503c5d86d70bdd7.tar.gz
linux-5ef50c3bec20060bc114f62d6503c5d86d70bdd7.tar.bz2
linux-5ef50c3bec20060bc114f62d6503c5d86d70bdd7.zip
ceph: simplify+fix atomic_open
The initial ->atomic_open op was carried over from the old intent code, which was incomplete and didn't really work. Replace it with a fresh method. In particular: * always attempt to do an atomic open+lookup, both for the create case and for lookups of existing files. * fix symlink handling by returning 1 to the VFS so that we can follow the link to its destination. This fixes a longstanding ceph bug (#2392). Signed-off-by: Sage Weil <sage@inktank.com>
Diffstat (limited to 'fs/ceph/super.h')
-rw-r--r--fs/ceph/super.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/ceph/super.h b/fs/ceph/super.h
index ebc95cc652be..66ebe720e40d 100644
--- a/fs/ceph/super.h
+++ b/fs/ceph/super.h
@@ -806,9 +806,9 @@ extern int ceph_copy_from_page_vector(struct page **pages,
loff_t off, size_t len);
extern struct page **ceph_alloc_page_vector(int num_pages, gfp_t flags);
extern int ceph_open(struct inode *inode, struct file *file);
-extern int ceph_lookup_open(struct inode *dir, struct dentry *dentry,
- struct file *od, unsigned flags,
- umode_t mode, int *opened);
+extern int ceph_atomic_open(struct inode *dir, struct dentry *dentry,
+ struct file *file, unsigned flags, umode_t mode,
+ int *opened);
extern int ceph_release(struct inode *inode, struct file *filp);
/* dir.c */