diff options
author | 2010-05-07 11:26:34 -0700 | |
---|---|---|
committer | 2010-05-11 09:53:55 -0700 | |
commit | 04d000eb358919043da538f197d63f2a5924a525 (patch) | |
tree | 725f4031c083323b63664f03b4d0d7ce9c183b21 /fs/ceph/inode.c | |
parent | ceph: unregister osd request on failure (diff) | |
download | linux-04d000eb358919043da538f197d63f2a5924a525.tar.gz linux-04d000eb358919043da538f197d63f2a5924a525.tar.bz2 linux-04d000eb358919043da538f197d63f2a5924a525.zip |
ceph: fix open file counting on snapped inodes when mds returns no caps
It's possible the MDS will not issue caps on a snapped inode, in which case
an open request may not __ceph_get_fmode(), botching the open file
counting. (This is actually a server bug, but the client shouldn't BUG out
in this case.)
Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'fs/ceph/inode.c')
-rw-r--r-- | fs/ceph/inode.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c index 261f3e6c0bcf..85b4d2ffdeba 100644 --- a/fs/ceph/inode.c +++ b/fs/ceph/inode.c @@ -733,6 +733,10 @@ no_change: __ceph_get_fmode(ci, cap_fmode); spin_unlock(&inode->i_lock); } + } else if (cap_fmode >= 0) { + pr_warning("mds issued no caps on %llx.%llx\n", + ceph_vinop(inode)); + __ceph_get_fmode(ci, cap_fmode); } /* update delegation info? */ |