switch (type) {
case CEPH_LOCK_IAUTH:
+ ::encode(inode.version, bl);
::encode(inode.ctime, bl);
::encode(inode.mode, bl);
::encode(inode.uid, bl);
break;
case CEPH_LOCK_ILINK:
+ ::encode(inode.version, bl);
::encode(inode.ctime, bl);
::encode(inode.nlink, bl);
::encode(inode.anchored, bl);
break;
case CEPH_LOCK_IDFT:
- if (!is_auth()) {
+ if (is_auth()) {
+ ::encode(inode.version, bl);
+ } else {
bool dirty = dirfragtreelock.is_dirty();
::encode(dirty, bl);
}
case CEPH_LOCK_IFILE:
if (is_auth()) {
+ ::encode(inode.version, bl);
::encode(inode.mtime, bl);
::encode(inode.atime, bl);
::encode(inode.time_warp_seq, bl);
break;
case CEPH_LOCK_INEST:
- if (!is_auth()) {
+ if (is_auth()) {
+ ::encode(inode.version, bl);
+ } else {
bool dirty = nestlock.is_dirty();
::encode(dirty, bl);
}
break;
case CEPH_LOCK_IXATTR:
+ ::encode(inode.version, bl);
::encode(xattrs, bl);
break;
case CEPH_LOCK_ISNAP:
+ ::encode(inode.version, bl);
encode_snap(bl);
break;
case CEPH_LOCK_IFLOCK:
+ ::encode(inode.version, bl);
::encode(fcntl_locks, bl);
::encode(flock_locks, bl);
break;
case CEPH_LOCK_IPOLICY:
if (inode.is_dir()) {
+ ::encode(inode.version, bl);
::encode(inode.layout, bl);
}
break;
switch (type) {
case CEPH_LOCK_IAUTH:
+ ::decode(inode.version, p);
::decode(tm, p);
if (inode.ctime < tm) inode.ctime = tm;
::decode(inode.mode, p);
break;
case CEPH_LOCK_ILINK:
+ ::decode(inode.version, p);
::decode(tm, p);
if (inode.ctime < tm) inode.ctime = tm;
::decode(inode.nlink, p);
dout(10) << "decode_lock_state setting dftlock dirty flag" << dendl;
dirfragtreelock.mark_dirty(); // ok bc we're auth and caller will handle
}
+ } else {
+ ::decode(inode.version, p);
}
{
fragtree_t temp;
case CEPH_LOCK_IFILE:
if (!is_auth()) {
+ ::decode(inode.version, p);
::decode(inode.mtime, p);
::decode(inode.atime, p);
::decode(inode.time_warp_seq, p);
dout(10) << "decode_lock_state setting nestlock dirty flag" << dendl;
nestlock.mark_dirty(); // ok bc we're auth and caller will handle
}
+ } else {
+ ::decode(inode.version, p);
}
{
nest_info_t rstat;
break;
case CEPH_LOCK_IXATTR:
+ ::decode(inode.version, p);
::decode(xattrs, p);
break;
case CEPH_LOCK_ISNAP:
{
+ ::decode(inode.version, p);
snapid_t seq = 0;
if (snaprealm)
seq = snaprealm->srnode.seq;
break;
case CEPH_LOCK_IFLOCK:
+ ::decode(inode.version, p);
::decode(fcntl_locks, p);
::decode(flock_locks, p);
break;
case CEPH_LOCK_IPOLICY:
if (inode.is_dir()) {
+ ::decode(inode.version, p);
::decode(inode.layout, p);
}
break;