diff --git a/weed/filer/filer_conf.go b/weed/filer/filer_conf.go index d61c68173b..ed53cbca98 100644 --- a/weed/filer/filer_conf.go +++ b/weed/filer/filer_conf.go @@ -259,9 +259,13 @@ func (fc *FilerConf) InodeIndexActiveUnder(dirPath string) bool { if fc.MatchStorageRule(dirPath).InodeIndex { return true } + prefix := dirPath + if !strings.HasSuffix(prefix, "/") { + prefix += "/" + } active := false fc.rules.Walk(func(key []byte, value *filer_pb.FilerConf_PathConf) bool { - if value.InodeIndex && strings.HasPrefix(string(key), dirPath) { + if value.InodeIndex && (string(key) == dirPath || strings.HasPrefix(string(key), prefix)) { active = true return false } diff --git a/weed/filer/filer_inode_index_test.go b/weed/filer/filer_inode_index_test.go index 9172dd383a..034c1fd3ec 100644 --- a/weed/filer/filer_inode_index_test.go +++ b/weed/filer/filer_inode_index_test.go @@ -296,6 +296,8 @@ func TestInodeIndexActiveUnder(t *testing.T) { assert.True(t, fc.InodeIndexActiveUnder("/exports")) assert.True(t, fc.InodeIndexActiveUnder("/exports/sub")) assert.False(t, fc.InodeIndexActiveUnder("/other")) + assert.False(t, fc.InodeIndexActiveUnder("/exp")) + assert.False(t, fc.InodeIndexActiveUnder("/export")) assert.False(t, NewFilerConf().InodeIndexActiveUnder("/")) }