From c8e1154f1e81cdc4c62c531574b11dc25bfa719e Mon Sep 17 00:00:00 2001 From: jiuker <2818723467@qq.com> Date: Fri, 13 Jan 2023 20:16:23 +0800 Subject: [PATCH] fix: reading from erasureDisks must be protected via read lock() (#16407) --- cmd/erasure-server-pool.go | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/cmd/erasure-server-pool.go b/cmd/erasure-server-pool.go index 80062069b..6541f3afd 100644 --- a/cmd/erasure-server-pool.go +++ b/cmd/erasure-server-pool.go @@ -187,10 +187,8 @@ func (z *erasureServerPools) GetDisksID(ids ...string) []StorageAPI { } res := make([]StorageAPI, 0, len(idMap)) for _, s := range z.serverPools { - s.erasureDisksMu.RLock() - defer s.erasureDisksMu.RUnlock() - for _, disks := range s.erasureDisks { - for _, disk := range disks { + for _, set := range s.sets { + for _, disk := range set.getDisks() { if disk == OfflineDisk { continue } @@ -211,8 +209,8 @@ func (z *erasureServerPools) GetDisksID(ids ...string) []StorageAPI { func (z *erasureServerPools) GetRawData(ctx context.Context, volume, file string, fn func(r io.Reader, host string, disk string, filename string, info StatInfo) error) error { found := 0 for _, s := range z.serverPools { - for _, disks := range s.erasureDisks { - for _, disk := range disks { + for _, set := range s.sets { + for _, disk := range set.getDisks() { if disk == OfflineDisk { continue }