fix(client): Fixed issues #3586 readdir offset

Signed-off-by: linfangrong <linfangrong.liuxin@qq.com>
This commit is contained in:
linfangrong 2025-08-06 15:46:44 +08:00 committed by 梁曟風
parent 66d45dba3b
commit 0da75080fe

View File

@ -462,19 +462,14 @@ func (d *Dir) ReadDir(ctx context.Context, req *fuse.ReadRequest, resp *fuse.Rea
metric.SetWithLabels(err, map[string]string{exporter.Vol: d.super.volname})
d.super.runningMonitor.SubClientOp(runningStat, err)
}()
var dirCtx DirContext
if req.Offset != 0 {
dirCtx = d.dctx.GetCopy(req.Handle)
} else {
dirCtx = DirContext{}
}
var dirCtx DirContext = d.dctx.GetCopy(req.Handle)
children, err := d.super.mw.ReadDirLimit_ll(d.info.Inode, dirCtx.Name, limit)
if err != nil {
log.LogErrorf("readdirlimit: Readdir: ino(%v) err(%v) offset %v", d.info.Inode, err, req.Offset)
return make([]fuse.Dirent, 0), ParseError(err)
}
if req.Offset == 0 {
if dirCtx.Name == "" {
if len(children) == 0 {
dirents := make([]fuse.Dirent, 0, len(children))
dirents = append(dirents, fuse.Dirent{