req->dentry_unless = CEPH_CAP_FILE_EXCL;
int res = get_or_create(dir, name, &req->dentry);
- if (res<0)
- return res;
+ if (res < 0)
+ goto fail;
res = make_request(req, uid, gid);
ldout(cct, 3) << "mknod(" << path << ", 0" << oct << mode << dec << ") = " << res << dendl;
return res;
+
+ fail:
+ delete req;
+ return res;
}
int Client::ll_mknod(vinodeno_t parent, const char *name, mode_t mode, dev_t rdev, struct stat *attr, int uid, int gid)
req->dentry_unless = CEPH_CAP_FILE_EXCL;
int res = get_or_create(dir, name, &req->dentry);
- if (res<0)
- return res;
+ if (res < 0)
+ goto fail;
res = make_request(req, uid, gid);
<< ' ' << preferred_pg
<<") = " << res << dendl;
return res;
+
+ fail:
+ delete req;
+ return res;
}
int res = get_or_create(dir, name, &req->dentry);
if (res < 0)
- return res;
+ goto fail;
ldout(cct, 10) << "_mkdir: making request" << dendl;
res = make_request(req, uid, gid);
ldout(cct, 3) << "_mkdir(" << path << ", 0" << oct << mode << dec << ") = " << res << dendl;
return res;
+
+ fail:
+ delete req;
+ return res;
}
int Client::ll_mkdir(vinodeno_t parent, const char *name, mode_t mode, struct stat *attr, int uid, int gid)
int res = get_or_create(dir, name, &req->dentry);
if (res < 0)
- return res;
+ goto fail;
res = make_request(req, uid, gid);
trim_cache();
ldout(cct, 3) << "_symlink(\"" << path << "\", \"" << target << "\") = " << res << dendl;
return res;
+
+
+ fail:
+ delete req;
+ return res;
}
int Client::ll_symlink(vinodeno_t parent, const char *name, const char *value, struct stat *attr, int uid, int gid)
int res = get_or_create(dir, name, &req->dentry);
if (res < 0)
- return res;
+ goto fail;
req->dentry_drop = CEPH_CAP_FILE_SHARED;
req->dentry_unless = CEPH_CAP_FILE_EXCL;
trim_cache();
ldout(cct, 3) << "unlink(" << path << ") = " << res << dendl;
return res;
+
+ fail:
+ delete req;
+ return res;
}
int Client::ll_unlink(vinodeno_t vino, const char *name, int uid, int gid)
int res = get_or_create(dir, name, &req->dentry);
if (res < 0)
- return res;
+ goto fail;
res = _lookup(dir, name, &req->inode);
res = make_request(req, uid, gid);
trim_cache();
ldout(cct, 3) << "rmdir(" << path << ") = " << res << dendl;
return res;
+
+ fail:
+ delete req;
+ return res;
}
int Client::ll_rmdir(vinodeno_t vino, const char *name, int uid, int gid)
int res = get_or_create(fromdir, fromname, &req->old_dentry);
if (res < 0)
- return res;
+ goto fail;
req->old_dentry_drop = CEPH_CAP_FILE_SHARED;
req->old_dentry_unless = CEPH_CAP_FILE_EXCL;
res = get_or_create(todir, toname, &req->dentry);
if (res < 0)
- return res;
+ goto fail;
req->dentry_drop = CEPH_CAP_FILE_SHARED;
req->dentry_unless = CEPH_CAP_FILE_EXCL;
res = _lookup(fromdir, fromname, &req->old_inode);
if (res < 0)
- return res;
+ goto fail;
req->old_inode_drop = CEPH_CAP_LINK_SHARED;
res = _lookup(todir, toname, &req->other_inode);
trim_cache();
ldout(cct, 3) << "rename(" << from << ", " << to << ") = " << res << dendl;
return res;
+
+ fail:
+ delete req;
+ return res;
}
int Client::ll_rename(vinodeno_t parent, const char *name, vinodeno_t newparent, const char *newname, int uid, int gid)
int res = get_or_create(dir, newname, &req->dentry);
if (res < 0)
- return res;
+ goto fail;
res = make_request(req, uid, gid);
ldout(cct, 10) << "link result is " << res << dendl;
trim_cache();
ldout(cct, 3) << "link(" << existing << ", " << path << ") = " << res << dendl;
return res;
+
+ fail:
+ delete req;
+ return res;
}
int Client::ll_link(vinodeno_t vino, vinodeno_t newparent, const char *newname, struct stat *attr, int uid, int gid)