@@ -19,6 +19,7 @@ import (
1919 "gitlab.com/postgres-ai/database-lab/v2/pkg/retrieval/engine/postgres/tools"
2020 "gitlab.com/postgres-ai/database-lab/v2/pkg/services/provision/resources"
2121 "gitlab.com/postgres-ai/database-lab/v2/pkg/services/provision/runners"
22+ "gitlab.com/postgres-ai/database-lab/v2/pkg/services/provision/thinclones/zfs"
2223)
2324
2425const (
@@ -181,6 +182,8 @@ func (pm *Manager) examineEntries(entries []os.FileInfo) (map[string]FSManager,
181182 fsManagers := make (map [string ]FSManager )
182183 poolList := & list.List {}
183184
185+ poolMappings := make (map [string ]string )
186+
184187 for _ , entry := range entries {
185188 if ! entry .IsDir () {
186189 continue
@@ -204,6 +207,7 @@ func (pm *Manager) examineEntries(entries []os.FileInfo) (map[string]FSManager,
204207 pool := & resources.Pool {
205208 Mode : fsType ,
206209 Name : entry .Name (),
210+ PoolDirName : entry .Name (),
207211 MountDir : pm .cfg .MountDir ,
208212 CloneSubDir : pm .cfg .CloneSubDir ,
209213 DataSubDir : pm .cfg .DataSubDir ,
@@ -223,6 +227,21 @@ func (pm *Manager) examineEntries(entries []os.FileInfo) (map[string]FSManager,
223227 log .Msg (pool .DSA .String ())
224228 }
225229
230+ // A custom pool name is not available for LVM.
231+ if fsType == ZFS {
232+ if len (poolMappings ) == 0 {
233+ poolMappings , err = zfs .PoolMappings (pm .runner , pm .cfg .MountDir , pm .cfg .PreSnapshotSuffix )
234+ if err != nil {
235+ log .Msg ("failed to get pool mappings:" , err .Error ())
236+ continue
237+ }
238+ }
239+
240+ if poolName , ok := poolMappings [entry .Name ()]; ok {
241+ pool .Name = poolName
242+ }
243+ }
244+
226245 fsm , err := NewManager (pm .runner , ManagerConfig {
227246 Pool : pool ,
228247 PreSnapshotSuffix : pm .cfg .PreSnapshotSuffix ,
@@ -232,8 +251,7 @@ func (pm *Manager) examineEntries(entries []os.FileInfo) (map[string]FSManager,
232251 continue
233252 }
234253
235- // TODO(akartasov): extract pool name.
236- fsManagers [entry .Name ()] = fsm
254+ fsManagers [pool .Name ] = fsm
237255
238256 front := poolList .Front ()
239257 if front == nil || front .Value == nil || fsManagers [front .Value .(string )].Pool ().DSA .Before (pool .DSA ) {
0 commit comments