This is an automated email from the ASF dual-hosted git repository. xiaoxiang781216 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit 32962778d103b8042579ac4fd67965d10b61bf00 Author: Xiang Xiao <[email protected]> AuthorDate: Wed Nov 11 23:52:33 2026 +0800 fs/userfs: keep f_pos in step with the daemon userfs_read(), userfs_write() and userfs_seek() forward the request to the daemon but never update filep->f_pos. file_seek() returns filep->f_pos, so lseek(fd, 0, SEEK_CUR) keeps reporting the position of the open, and pread() and pwrite() restore that stale offset afterwards. Advance f_pos by the bytes read or written, and set it to the offset the daemon returns for a seek. Signed-off-by: Xiang Xiao <[email protected]> Signed-off-by: jingfei <[email protected]> --- fs/userfs/fs_userfs.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/fs/userfs/fs_userfs.c b/fs/userfs/fs_userfs.c index 39ab75a7cb2..2a1248edb0e 100644 --- a/fs/userfs/fs_userfs.c +++ b/fs/userfs/fs_userfs.c @@ -469,6 +469,10 @@ static ssize_t userfs_read(FAR struct file *filep, char *buffer, memcpy(buffer, resp->rddata, resp->nread); nread = resp->nread; + if (nread > 0) + { + filep->f_pos += nread; + } nxmutex_unlock(&priv->lock); @@ -561,6 +565,10 @@ static ssize_t userfs_write(FAR struct file *filep, FAR const char *buffer, } nwritten = resp->nwritten; + if (nwritten > 0) + { + filep->f_pos += nwritten; + } nxmutex_unlock(&priv->lock); @@ -643,6 +651,10 @@ static off_t userfs_seek(FAR struct file *filep, off_t offset, int whence) } off_ret = resp->ret; + if (off_ret >= 0) + { + filep->f_pos = off_ret; + } nxmutex_unlock(&priv->lock);
