fix offsets
This commit is contained in:
parent
9cfbc441e7
commit
9777187bc7
1 changed files with 19 additions and 3 deletions
|
|
@ -30,6 +30,8 @@ struct Fid
|
||||||
int ref;
|
int ref;
|
||||||
int cfid;
|
int cfid;
|
||||||
int openfd;
|
int openfd;
|
||||||
|
int offset;
|
||||||
|
int coffset;
|
||||||
int isdir;
|
int isdir;
|
||||||
Fid *next;
|
Fid *next;
|
||||||
};
|
};
|
||||||
|
|
@ -475,6 +477,12 @@ connthread(void *arg)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(m->tx.type==Tread && m->fid->isdir && dotu && !c->dotu){
|
||||||
|
if(m->tx.offset = m->fid->coffset)
|
||||||
|
m->tx.offset = m->fid->offset;
|
||||||
|
else
|
||||||
|
m->fid->offset = m->fid->coffset;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -791,8 +799,11 @@ connoutthread(void *arg)
|
||||||
fidput(m->newfid);
|
fidput(m->newfid);
|
||||||
break;
|
break;
|
||||||
case Tread:
|
case Tread:
|
||||||
if(!err && m->fid->isdir && dotu && !m->c->dotu)
|
if(!err && m->fid->isdir && dotu && !m->c->dotu){
|
||||||
|
m->fid->offset += m->rx.count;
|
||||||
stripudirread(m);
|
stripudirread(m);
|
||||||
|
m->fid->coffset += m->rx.count;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case Tstat:
|
case Tstat:
|
||||||
if(!err && dotu && !m->c->dotu)
|
if(!err && dotu && !m->c->dotu)
|
||||||
|
|
@ -961,6 +972,8 @@ fidnew(int cfid)
|
||||||
freefid = f->next;
|
freefid = f->next;
|
||||||
f->cfid = cfid;
|
f->cfid = cfid;
|
||||||
f->ref = 1;
|
f->ref = 1;
|
||||||
|
f->offset = 0;
|
||||||
|
f->coffset = 0;
|
||||||
f->isdir = -1;
|
f->isdir = -1;
|
||||||
return f;
|
return f;
|
||||||
}
|
}
|
||||||
|
|
@ -1329,14 +1342,17 @@ rewritehdr(Fcall *f, uchar *pkt)
|
||||||
restring(pkt, n, f->name);
|
restring(pkt, n, f->name);
|
||||||
/* fall through */
|
/* fall through */
|
||||||
case Topen:
|
case Topen:
|
||||||
case Tread:
|
|
||||||
case Twrite:
|
|
||||||
case Tclunk:
|
case Tclunk:
|
||||||
case Tremove:
|
case Tremove:
|
||||||
case Tstat:
|
case Tstat:
|
||||||
case Twstat:
|
case Twstat:
|
||||||
|
case Twrite:
|
||||||
PBIT32(pkt+7, f->fid);
|
PBIT32(pkt+7, f->fid);
|
||||||
break;
|
break;
|
||||||
|
case Tread:
|
||||||
|
PBIT32(pkt+7, f->fid);
|
||||||
|
PBIT64(pkt+11, f->offset);
|
||||||
|
break;
|
||||||
case Rerror:
|
case Rerror:
|
||||||
restring(pkt, n, f->ename);
|
restring(pkt, n, f->ename);
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue