if (!mds->locker->acquire_locks(mdr, rdlocks, wrlocks, xlocks))
return;
+ if (!check_access(mdr, diri, MAY_READ))
+ return;
+
SnapRealm *realm = diri->find_snaprealm();
map<snapid_t,SnapInfo*> infomap;
realm->get_snap_info(infomap, diri->get_oldest_snap());
if (!mds->locker->acquire_locks(mdr, rdlocks, wrlocks, xlocks))
return;
+ if (!check_access(mdr, diri, MAY_WRITE))
+ return;
+
// make sure name is unique
if (diri->snaprealm &&
diri->snaprealm->exists(snapname)) {
if (!mds->locker->acquire_locks(mdr, rdlocks, wrlocks, xlocks))
return;
+ if (!check_access(mdr, diri, MAY_WRITE))
+ return;
+
// prepare
if (!mdr->more()->stid) {
mds->snapclient->prepare_destroy(diri->ino(), snapid,
if (!mds->locker->acquire_locks(mdr, rdlocks, wrlocks, xlocks))
return;
+ if (!check_access(mdr, diri, MAY_WRITE))
+ return;
+
// prepare
if (!mdr->more()->stid) {
mds->snapclient->prepare_update(diri->ino(), snapid, dstname, utime_t(),