aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ceph/dir.c
diff options
context:
space:
mode:
authorSage Weil <sage@newdream.net>2009-10-27 14:50:50 -0400
committerSage Weil <sage@newdream.net>2009-10-27 14:57:03 -0400
commit6b8051855d983db8480ff1ea1b02ef2b49203c22 (patch)
treeafb72be534ddd4c474a2ec9b7cf2ea5ab86799bc /fs/ceph/dir.c
parente53c2fe075feda1fd4f009956ac026dc24c3a199 (diff)
ceph: allocate and parse mount args before client instance
This simplifies much of the error handling during mount. It also means that we have the mount args before client creation, and we can initialize based on those options. Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'fs/ceph/dir.c')
-rw-r--r--fs/ceph/dir.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c
index 7bb8db524e58..4f7467961b09 100644
--- a/fs/ceph/dir.c
+++ b/fs/ceph/dir.c
@@ -225,7 +225,7 @@ static int ceph_readdir(struct file *filp, void *dirent, filldir_t filldir)
225 int err; 225 int err;
226 u32 ftype; 226 u32 ftype;
227 struct ceph_mds_reply_info_parsed *rinfo; 227 struct ceph_mds_reply_info_parsed *rinfo;
228 const int max_entries = client->mount_args.max_readdir; 228 const int max_entries = client->mount_args->max_readdir;
229 229
230 dout("readdir %p filp %p frag %u off %u\n", inode, filp, frag, off); 230 dout("readdir %p filp %p frag %u off %u\n", inode, filp, frag, off);
231 if (fi->at_end) 231 if (fi->at_end)
@@ -479,7 +479,8 @@ struct dentry *ceph_finish_lookup(struct ceph_mds_request *req,
479 /* .snap dir? */ 479 /* .snap dir? */
480 if (err == -ENOENT && 480 if (err == -ENOENT &&
481 ceph_vino(parent).ino != CEPH_INO_ROOT && /* no .snap in root dir */ 481 ceph_vino(parent).ino != CEPH_INO_ROOT && /* no .snap in root dir */
482 strcmp(dentry->d_name.name, client->mount_args.snapdir_name) == 0) { 482 strcmp(dentry->d_name.name,
483 client->mount_args->snapdir_name) == 0) {
483 struct inode *inode = ceph_get_snapdir(parent); 484 struct inode *inode = ceph_get_snapdir(parent);
484 dout("ENOENT on snapdir %p '%.*s', linking to snapdir %p\n", 485 dout("ENOENT on snapdir %p '%.*s', linking to snapdir %p\n",
485 dentry, dentry->d_name.len, dentry->d_name.name, inode); 486 dentry, dentry->d_name.len, dentry->d_name.name, inode);
@@ -550,7 +551,7 @@ static struct dentry *ceph_lookup(struct inode *dir, struct dentry *dentry,
550 spin_lock(&dir->i_lock); 551 spin_lock(&dir->i_lock);
551 dout(" dir %p flags are %d\n", dir, ci->i_ceph_flags); 552 dout(" dir %p flags are %d\n", dir, ci->i_ceph_flags);
552 if (strncmp(dentry->d_name.name, 553 if (strncmp(dentry->d_name.name,
553 client->mount_args.snapdir_name, 554 client->mount_args->snapdir_name,
554 dentry->d_name.len) && 555 dentry->d_name.len) &&
555 (ci->i_ceph_flags & CEPH_I_COMPLETE) && 556 (ci->i_ceph_flags & CEPH_I_COMPLETE) &&
556 (__ceph_caps_issued_mask(ci, CEPH_CAP_FILE_SHARED, 1))) { 557 (__ceph_caps_issued_mask(ci, CEPH_CAP_FILE_SHARED, 1))) {