diff options
author | Sage Weil <sage@newdream.net> | 2010-08-26 18:26:37 +0200 |
---|---|---|
committer | Sage Weil <sage@newdream.net> | 2010-08-26 18:26:37 +0200 |
commit | e072f8aa3587710cd35cce0f6b6efd7b4276c327 (patch) | |
tree | a0455b3ed1d76880a6553d39f017081a1832f5ba /fs/ceph/mds_client.c | |
parent | ceph: ceph_mdsc_build_path() returns an ERR_PTR (diff) | |
download | linux-e072f8aa3587710cd35cce0f6b6efd7b4276c327.tar.xz linux-e072f8aa3587710cd35cce0f6b6efd7b4276c327.zip |
ceph: don't BUG on ENOMEM during mds reconnect
We are in a position to return an error; do that instead.
Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'fs/ceph/mds_client.c')
-rw-r--r-- | fs/ceph/mds_client.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c index 8d1f11c7a5a2..f091b1351786 100644 --- a/fs/ceph/mds_client.c +++ b/fs/ceph/mds_client.c @@ -2324,7 +2324,7 @@ static int encode_caps_cb(struct inode *inode, struct ceph_cap *cap, path = ceph_mdsc_build_path(dentry, &pathlen, &pathbase, 0); if (IS_ERR(path)) { err = PTR_ERR(path); - BUG_ON(err); + goto out_dput; } } else { path = NULL; @@ -2332,7 +2332,7 @@ static int encode_caps_cb(struct inode *inode, struct ceph_cap *cap, } err = ceph_pagelist_encode_string(pagelist, path, pathlen); if (err) - goto out; + goto out_free; spin_lock(&inode->i_lock); cap->seq = 0; /* reset cap seq */ @@ -2376,8 +2376,9 @@ static int encode_caps_cb(struct inode *inode, struct ceph_cap *cap, unlock_kernel(); } -out: +out_free: kfree(path); +out_dput: dput(dentry); return err; } |