// inode stuff
-int Client::_getattr(Inode *in, int mask, int uid, int gid, bool force)
+int Client::_getattr(Inode *in, int mask, const UserPerm& perms, bool force)
{
bool yes = in->caps_issued_mask(mask);
req->set_inode(in);
req->head.args.getattr.mask = mask;
- int res = make_request(req, uid, gid);
+ int res = make_request(req, perms);
ldout(cct, 10) << "_getattr result=" << res << dendl;
return res;
}
InodeRef *inp = 0);
int _setattr(InodeRef &in, struct stat *attr, int mask,
const UserPerm& perms);
- int _getattr(Inode *in, int mask, int uid=-1, int gid=-1, bool force=false);
+ int _getattr(Inode *in, int mask, const UserPerm& perms, bool force=false);
+ int _getattr(InodeRef &in, int mask, const UserPerm& perms, bool force=false) {
+ return _getattr(in.get(), mask, perms, force);
+ }
int _getattr(InodeRef &in, int mask, int uid=-1, int gid=-1, bool force=false) {
return _getattr(in.get(), mask, uid, gid, force);
}
- int _getattr(InodeRef &in, int mask, const UserPerm& perms, bool force=false) {
+ int _getattr(Inode *in, int mask, int uid=-1, int gid=-1, bool force=false) {
+ if (uid < 0) uid = get_uid();
+ if (gid < 0) gid = get_gid();
+ UserPerm perms(uid, gid);
return _getattr(in, mask, perms, force);
}
- int _getattr(Inode *in, int mask, const UserPerm& perms, bool force=false) {
- return _getattr(in, mask, perms.uid(), perms.gid(), force);
- }
int _readlink(Inode *in, char *buf, size_t size);
int _getxattr(Inode *in, const char *name, void *value, size_t len,
const UserPerm& perms);