]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
kclient: some fmode cleanup
authorSage Weil <sage@newdream.net>
Tue, 3 Mar 2009 22:27:15 +0000 (14:27 -0800)
committerSage Weil <sage@newdream.net>
Tue, 3 Mar 2009 22:27:15 +0000 (14:27 -0800)
BUG instead of WARN.  Rename field.

src/kernel/file.c
src/kernel/inode.c
src/kernel/super.h

index 5bb93b612a0594f546309dcce84da2956d98fd3c..af1b8acb590fd575c9a3adb55123507f9b0bd87a 100644 (file)
@@ -62,7 +62,7 @@ static int ceph_init_file(struct inode *inode, struct file *file, int fmode)
                ceph_put_fmode(ceph_inode(inode), fmode); /* clean up */
                return -ENOMEM;
        }
-       cf->mode = fmode;
+       cf->fmode = fmode;
        file->private_data = cf;
        return 0;
 }
@@ -115,7 +115,8 @@ int ceph_open(struct inode *inode, struct file *file)
                return ceph_init_file(inode, file, fmode);
        }
        spin_unlock(&inode->i_lock);
-       dout(10, "open fmode %d, don't have caps %d\n", fmode, wantcaps);
+       dout(10, "open fmode %d, don't have caps %s\n", fmode,
+            ceph_cap_string(wantcaps));
 
        dentry = d_find_alias(inode);
        if (!dentry)
@@ -188,21 +189,7 @@ int ceph_release(struct inode *inode, struct file *file)
        struct ceph_file_info *cf = file->private_data;
 
        dout(5, "release inode %p file %p\n", inode, file);
-
-       /*
-        * MYSTERY: why is file->f_flags now different than
-        * file->f_flags (actually, nd->intent.open.flags) on
-        * open?  e.g., on ceph_lookup_open,
-        *   ceph_file: opened 000000006fa3ebd0 flags 0101102 mode 2 nr now 1.\
-        *  wanted 0 -> 30
-        * and on release,
-        *   ceph_file: released 000000006fa3ebd0 flags 0100001 mode 3 nr now \
-        * -1.  wanted 30 was 30
-        *
-        * Huh.  Well, for now, store the open mode in ceph_file_info.
-        */
-
-       ceph_put_fmode(ci, cf->mode);
+       ceph_put_fmode(ci, cf->fmode);
        if (cf->last_readdir)
                ceph_mdsc_put_request(cf->last_readdir);
        kfree(cf->dir_info);
index a8ad3ce59355ccf884347403ff92e6b1ab567d51..f96c8a54b80a90309b4b0fbdf7c3847df49d127c 100644 (file)
@@ -1300,7 +1300,7 @@ void ceph_put_fmode(struct ceph_inode_info *ci, int fmode)
        spin_lock(&ci->vfs_inode.i_lock);
        dout(20, "put_mode %p fmode %d %d -> %d\n", &ci->vfs_inode, fmode,
             ci->i_nr_by_mode[fmode], ci->i_nr_by_mode[fmode]-1);
-       WARN_ON(ci->i_nr_by_mode[fmode] == 0);
+       BUG_ON(ci->i_nr_by_mode[fmode] == 0);
        if (--ci->i_nr_by_mode[fmode] == 0)
                last++;
        spin_unlock(&ci->vfs_inode.i_lock);
index 89caebd7a1e5f56b8cc44dcb797044a2f582ae93..b9f3e0678fcab6a5fa468e0c2db8533db740c366 100644 (file)
@@ -518,7 +518,7 @@ static inline int ceph_queue_page_invalidation(struct inode *inode)
  * keep readdir buffers attached to file->private_data
  */
 struct ceph_file_info {
-       int mode;      /* initialized on open */
+       int fmode;     /* initialized on open */
        u32 frag;      /* one frag at a time; screw seek_dir() on large dirs */
        struct ceph_mds_request *last_readdir;