fix(nfs): assign non-zero fsid during MigrateNFSClients migration

When migrating old clients format (string array) to new format
(NFSClient objects), also fix any exports that have fsid=0 by
generating a new random fsid. This resolves exportfs errors like:
  exportfs: /path fsid=0 requires fsid= for NFS export

The migration now checks if r.FSID == 0 and generates a new one
using system.GenerateRandomFSID() before updating the row.
This commit is contained in:
2026-07-06 12:00:56 -04:00
parent 59505b443f
commit 667576e5bd
+10 -1
View File
@@ -9,6 +9,7 @@ import (
"sort"
"strings"
"github.com/darroyo/nasctl/internal/system"
_ "modernc.org/sqlite"
)
@@ -212,7 +213,15 @@ func (d *DB) MigrateNFSClients() error {
}
for _, r := range toUpdate {
if _, err := d.conn.Exec(`UPDATE nfs_exports SET clients = ? WHERE id = ?`, r.Clients, r.ID); err != nil {
fsid := r.FSID
if fsid == 0 {
n, err := system.GenerateRandomFSID()
if err != nil {
return fmt.Errorf("generate fsid for id %d: %w", r.ID, err)
}
fsid = int64(n)
}
if _, err := d.conn.Exec(`UPDATE nfs_exports SET clients = ?, fsid = ? WHERE id = ?`, r.Clients, fsid, r.ID); err != nil {
return fmt.Errorf("update nfs export id %d: %w", r.ID, err)
}
}