* @param use_mds [optional] prefer a specific mds (-1 for default)
* @param pdirbl [optional; disallowed if ptarget] where to pass extra reply payload to the caller
*/
- int Client::make_request(MetaRequest *request,
- int uid, int gid,
+ int Client::make_request(MetaRequest *request,
+ const UserPerm& perms,
InodeRef *ptarget, bool *pcreated,
- int use_mds,
+ mds_rank_t use_mds,
bufferlist *pdirbl)
{
int r = 0;
return res;
}
- int Client::_ll_setattrx(Inode *in, struct ceph_statx *stx, int mask, int uid,
- int gid, InodeRef *inp)
+ int Client::_ll_setattrx(Inode *in, struct ceph_statx *stx, int mask,
+ const UserPerm& perms, InodeRef *inp)
{
- Mutex::Locker lock(client_lock);
-
vinodeno_t vino = _get_vino(in);
ldout(cct, 3) << "ll_setattrx " << vino << " mask " << hex << mask << dec
mask &= ~(CEPH_SETATTR_MTIME_NOW | CEPH_SETATTR_ATIME_NOW);
- return __setattrx(in, stx, mask, uid, gid, inp);
+ return __setattrx(in, stx, mask, perms, inp);
}
- int Client::ll_setattrx(Inode *in, struct ceph_statx *stx, int mask, int uid,
- int gid)
+ int Client::ll_setattrx(Inode *in, struct ceph_statx *stx, int mask,
+ const UserPerm& perms)
{
+ Mutex::Locker lock(client_lock);
InodeRef target(in);
- int res = _ll_setattrx(in, stx, mask, uid, gid, &target);
+ int res = _ll_setattrx(in, stx, mask, perms, &target);
if (res == 0) {
assert(in == target.get());
fill_statx(in, in->caps_issued(), stx);
return res;
}
- int Client::ll_setattr(Inode *in, struct stat *attr, int mask, int uid,
- int gid)
+ int Client::ll_setattr(Inode *in, struct stat *attr, int mask,
+ const UserPerm& perms)
{
struct ceph_statx stx;
-
stat_to_statx(attr, &stx);
+ Mutex::Locker lock(client_lock);
InodeRef target(in);
- int res = _ll_setattrx(in, &stx, mask, uid, gid, &target);
+ int res = _ll_setattrx(in, &stx, mask, perms, &target);
if (res == 0) {
assert(in == target.get());
fill_stat(in, attr);
void dump_mds_requests(Formatter *f);
void dump_mds_sessions(Formatter *f);
- int make_request(MetaRequest *req, int uid, int gid,
- //MClientRequest *req, int uid, int gid,
+ int make_request(MetaRequest *req, const UserPerm& perms,
InodeRef *ptarget = 0, bool *pcreated = 0,
- int use_mds=-1, bufferlist *pdirbl=0);
+ mds_rank_t use_mds=-1, bufferlist *pdirbl=0);
void put_request(MetaRequest *request);
void unregister_request(MetaRequest *request);