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"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/darroyo/nasctl/internal/system"
|
||||||
_ "modernc.org/sqlite"
|
_ "modernc.org/sqlite"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -212,7 +213,15 @@ func (d *DB) MigrateNFSClients() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, r := range toUpdate {
|
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)
|
return fmt.Errorf("update nfs export id %d: %w", r.ID, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user