Do not include dentry offsets; they're not useful.
string dname;
LeaseStat dlease;
while (numdn) {
- __u32 pos; // dentry pos within the fragment
- ::decode(pos, p);
::decode(dname, p);
::decode(dlease, p);
InodeStat ist(p);
#define CEPH_MDS_PROTOCOL 9 /* cluster internal */
#define CEPH_MON_PROTOCOL 4 /* cluster internal */
#define CEPH_OSDC_PROTOCOL 18 /* public/client */
-#define CEPH_MDSC_PROTOCOL 22 /* public/client */
+#define CEPH_MDSC_PROTOCOL 23 /* public/client */
#define CEPH_MONC_PROTOCOL 12 /* public/client */
info->dir_in = kmalloc(num * (sizeof(*info->dir_in) +
sizeof(*info->dir_dname) +
sizeof(*info->dir_dname_len) +
- sizeof(*info->dir_pos) +
sizeof(*info->dir_dlease)),
GFP_NOFS);
if (info->dir_in == NULL) {
err = -ENOMEM;
goto out_bad;
}
- info->dir_pos = (void *)(info->dir_in + num);
- info->dir_dname = (void *)(info->dir_pos + num);
+ info->dir_dname = (void *)(info->dir_in + num);
info->dir_dname_len = (void *)(info->dir_dname + num);
info->dir_dlease = (void *)(info->dir_dname_len + num);
while (num) {
/* dentry */
ceph_decode_need(p, end, sizeof(u32)*2, bad);
- ceph_decode_32(p, info->dir_pos[i]);
ceph_decode_32(p, info->dir_dname_len[i]);
ceph_decode_need(p, end, info->dir_dname_len[i], bad);
info->dir_dname[i] = *p;
u32 *dir_dname_len;
struct ceph_mds_reply_lease **dir_dlease;
struct ceph_mds_reply_info_in *dir_in;
- u32 *dir_pos;
u8 dir_complete, dir_end;
/* encoded blob describing snapshot contexts for certain
__u32 numfiles = 0;
- __u32 pos = 0;
while (it != dir->end() && numfiles < max) {
CDentry *dn = it->second;
it++;
if (dn->last < snapid || dn->first > snapid)
continue;
- __u32 dpos = pos++;
if (offset && strcmp(dn->get_name().c_str(), offset) <= 0)
continue;
// dentry
dout(12) << "including dn " << *dn << dendl;
- ::encode(dpos, dnbl);
::encode(dn->name, dnbl);
mds->locker->issue_client_lease(dn, client, dnbl, mdr->now, mdr->session);