Skip to content

A few NFS bugfix#95

Open
ston3lu wants to merge 7 commits intovitalif:masterfrom
ston3lu:nfs-fixs
Open

A few NFS bugfix#95
ston3lu wants to merge 7 commits intovitalif:masterfrom
ston3lu:nfs-fixs

Conversation

@ston3lu
Copy link
Contributor

@ston3lu ston3lu commented Sep 24, 2025

Hi, I've been testing Vitastor-NFS for a while and have fixed a few bugs.

Looking forward to your review.

By submitting this pull request, I accept Vitastor CLA

vitalif pushed a commit that referenced this pull request Sep 24, 2025
#95

By submitting this pull request, I accept Vitastor CLA
vitalif pushed a commit that referenced this pull request Sep 24, 2025
#95

By submitting this pull request, I accept Vitastor CLA
vitalif pushed a commit that referenced this pull request Sep 24, 2025
#95

By submitting this pull request, I accept Vitastor CLA
vitalif pushed a commit that referenced this pull request Sep 24, 2025
#95

By submitting this pull request, I accept Vitastor CLA
@vitalif
Copy link
Owner

vitalif commented Sep 24, 2025

Hi, thanks!
Partially merged. At first glance I don't like two things:

  1. add root inode to kv db when nfs start - what exactly does the missing root inode break, how to reproduce the problem?
  2. return eof when read offset exceed file length - I know that it's a partial violation of the semantics but I didn't add this check on purpose - I wanted reads from large files to be data-only. So again, what does it really break?

vitalif pushed a commit that referenced this pull request Sep 24, 2025
#95

By submitting this pull request, I accept Vitastor CLA
vitalif pushed a commit that referenced this pull request Sep 24, 2025
#95

By submitting this pull request, I accept Vitastor CLA
vitalif pushed a commit that referenced this pull request Sep 24, 2025
#95

By submitting this pull request, I accept Vitastor CLA
vitalif pushed a commit that referenced this pull request Sep 24, 2025
#95

By submitting this pull request, I accept Vitastor CLA
vitalif added a commit that referenced this pull request Sep 24, 2025
New features:

- Support UBLK in CSI and make it the default
- Add image tree output: `vitastor-cli ls --tree`

Bug fixes:

- Fix OSDs crashing on localized reads from snapshotted images
- Several NFS fixes from github PR #95
- Fix snapshotted bitmap reads not working in EC pools (fix #92)
- Fix UBLK reporting incorrect device size (1/8 of actual size), report logical_block_size=4096
- Do not repeer when stopping PEER_CONNECTING osd_clients (increase PG peering stability on failover)
- Fix marking PGs as incomplete when peers are unavailable
- Fix FS formatter (mkfs and fsck) error handling in CSI (it didn't report mounting errors)
- Fix removal of block PVC devices not working in CSI
- Do not attempt to free outbound ops in clear_immediate_ops (fix #88)
- Add vitastor-disk prepare --dry-run option
- Add librdmacm-dev to build-deps
- Log has_invalid objects
- Do not warn on incomplete+has_invalid PG states as unexpected
- Fix OSD reweight values between 0 and 1 not working in monitor
- Fix OSD assertion failed: n_subops != sent when all object copies are corrupted
- Install ibverbs-providers in vitastor Docker builds
- Fix #86 - base64_decode on arm64 O_o
- Fix Proxmox 9.0 support (remove some kind of a whitelist added in upstream)
@ston3lu
Copy link
Contributor Author

ston3lu commented Sep 26, 2025

  1. add root inode to kv db when nfs start - what exactly does the missing root inode break, how to reproduce the problem?

The mount client typically determines whether to resend a readdir request to obtain the latest directory listing by comparing the directory's mtime. The most obvious case is that when client A creates a new file in the mounted root directory, client B cannot see the file.

  1. return eof when read offset exceed file length - I know that it's a partial violation of the semantics but I didn't add this check on purpose - I wanted reads from large files to be data-only. So again, what does it really break?

This is because I'm using a go-nfs-client which reads file endings only by checking if the EOF flag is set. For ordinary NFS clients, I indeed haven't encountered any issues. However, this is still a protocol specification, and I hope to resolve it to prevent potential failures in other use cases in the future.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants