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:
+10
-1
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user