Repository: juicedata/juicefs
Pull request #3686 (2023-05-26 05:06:43)

cmd/config: add option to enable/disable dir stats

github-actions[bot]: <!-- add-pr-comment:add-pr-comment -->

*Mutate Test Report*
 

Usage: https://github.com/juicedata/juicefs/blob/main/.github/scripts/mutate/how_to_use_mutate_test.md
github-actions[bot]: <!-- add-pr-comment:add-pr-comment -->

*Mutate Test Report*
 

Usage: https://github.com/juicedata/juicefs/blob/main/.github/scripts/mutate/how_to_use_mutate_test.md
github-actions[bot]: <!-- add-pr-comment:add-pr-comment -->

*Mutate Test Report*
pkg/meta/benchmarks_test.go-1-1: score:0.00 failed:0, passed:0, compile error:0, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089277880/jobs/9146758788

pkg/usage/usage_test.go-1-1: score:0.23 failed:10, passed:3, compile error:1, out of coverage:3, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089277880/jobs/9146758951

pkg/fs/fs_test.go-1-4: score:0.50 failed:17, passed:17, compile error:18, out of coverage:48, skip by comment:0, others:1
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089277880/jobs/9146758217

cmd/mount_test.go-4-4: score:1.00 failed:0, passed:16, compile error:4, out of coverage:0, skip by comment:0, others:38
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089277880/jobs/9146757939

pkg/fuse/fuse_test.go-1-1: score:0.21 failed:49, passed:13, compile error:11, out of coverage:37, skip by comment:0, others:1
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089277880/jobs/9146758695

pkg/fs/fs_test.go-4-4: score:0.49 failed:43, passed:42, compile error:4, out of coverage:9, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089277880/jobs/9146758590

cmd/mount_test.go-1-4: score:1.00 failed:0, passed:52, compile error:9, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089277880/jobs/9146757519

pkg/fs/fs_test.go-2-4: score:0.18 failed:55, passed:12, compile error:10, out of coverage:24, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089277880/jobs/9146758332

cmd/mount_test.go-2-4: score:1.00 failed:0, passed:52, compile error:2, out of coverage:7, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089277880/jobs/9146757677

cmd/mount_test.go-3-4: score:1.00 failed:0, passed:59, compile error:2, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089277880/jobs/9146757801

pkg/vfs/vfs_test.go-1-4: score:0.48 failed:50, passed:46, compile error:31, out of coverage:7, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089277880/jobs/9146759071

cmd/object_test.go-1-1: score:0.25 failed:71, passed:24, compile error:11, out of coverage:4, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089277880/jobs/9146758079

pkg/vfs/vfs_test.go-3-4: score:0.38 failed:73, passed:44, compile error:14, out of coverage:3, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089277880/jobs/9146759335

pkg/vfs/vfs_test.go-2-4: score:0.25 failed:96, passed:32, compile error:0, out of coverage:6, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089277880/jobs/9146759209

pkg/fs/fs_test.go-3-4: score:0.44 failed:45, passed:35, compile error:4, out of coverage:17, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089277880/jobs/9146758472

pkg/vfs/vfs_test.go-4-4: score:0.52 failed:50, passed:55, compile error:10, out of coverage:17, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089277880/jobs/9146759458 

Usage: https://github.com/juicedata/juicefs/blob/main/.github/scripts/mutate/how_to_use_mutate_test.md
github-actions[bot]: <!-- add-pr-comment:add-pr-comment -->

*Mutate Test Report*
pkg/meta/benchmarks_test.go-1-1: score:0.00 failed:0, passed:0, compile error:0, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089460549/jobs/9147157502

pkg/usage/usage_test.go-1-1: score:0.23 failed:10, passed:3, compile error:1, out of coverage:3, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089460549/jobs/9147157624

pkg/fs/fs_test.go-1-4: score:0.50 failed:17, passed:17, compile error:21, out of coverage:45, skip by comment:0, others:1
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089460549/jobs/9147156859

cmd/mount_test.go-4-4: score:1.00 failed:0, passed:16, compile error:4, out of coverage:0, skip by comment:0, others:38
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089460549/jobs/9147156664

pkg/fs/fs_test.go-2-4: score:0.16 failed:59, passed:11, compile error:10, out of coverage:21, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089460549/jobs/9147156973

pkg/fuse/fuse_test.go-1-1: score:0.21 failed:49, passed:13, compile error:11, out of coverage:37, skip by comment:0, others:1
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089460549/jobs/9147157314

pkg/fs/fs_test.go-4-4: score:0.49 failed:43, passed:42, compile error:4, out of coverage:9, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089460549/jobs/9147157186

cmd/mount_test.go-2-4: score:1.00 failed:0, passed:55, compile error:2, out of coverage:4, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089460549/jobs/9147156465

cmd/mount_test.go-1-4: score:1.00 failed:0, passed:52, compile error:9, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089460549/jobs/9147156339

cmd/mount_test.go-3-4: score:1.00 failed:0, passed:59, compile error:2, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089460549/jobs/9147156568

pkg/vfs/vfs_test.go-1-4: score:0.48 failed:50, passed:46, compile error:31, out of coverage:7, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089460549/jobs/9147157733

cmd/object_test.go-1-1: score:0.25 failed:71, passed:24, compile error:11, out of coverage:4, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089460549/jobs/9147156765

pkg/vfs/vfs_test.go-3-4: score:0.38 failed:73, passed:44, compile error:14, out of coverage:3, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089460549/jobs/9147157990

pkg/vfs/vfs_test.go-2-4: score:0.25 failed:96, passed:32, compile error:0, out of coverage:6, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089460549/jobs/9147157865

pkg/fs/fs_test.go-3-4: score:0.44 failed:45, passed:35, compile error:4, out of coverage:17, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089460549/jobs/9147157074

pkg/vfs/vfs_test.go-4-4: score:0.52 failed:50, passed:55, compile error:10, out of coverage:17, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089460549/jobs/9147158093 

Usage: https://github.com/juicedata/juicefs/blob/main/.github/scripts/mutate/how_to_use_mutate_test.md
github-actions[bot]: <!-- add-pr-comment:add-pr-comment -->

*Mutate Test Report*
pkg/meta/benchmarks_test.go-1-1: score:0.00 failed:0, passed:0, compile error:0, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089371360/jobs/9146988810

pkg/usage/usage_test.go-1-1: score:0.23 failed:10, passed:3, compile error:1, out of coverage:3, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089371360/jobs/9146988940

pkg/fs/fs_test.go-1-4: score:0.50 failed:17, passed:17, compile error:21, out of coverage:45, skip by comment:0, others:1
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089371360/jobs/9146988193

pkg/fs/fs_test.go-2-4: score:0.17 failed:58, passed:12, compile error:10, out of coverage:21, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089371360/jobs/9146988319

pkg/fuse/fuse_test.go-1-1: score:0.21 failed:49, passed:13, compile error:11, out of coverage:37, skip by comment:0, others:1
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089371360/jobs/9146988695

cmd/mount_test.go-1-4: score:1.00 failed:0, passed:52, compile error:9, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089371360/jobs/9146987570

cmd/mount_test.go-2-4: score:1.00 failed:0, passed:54, compile error:2, out of coverage:5, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089371360/jobs/9146987746

pkg/fs/fs_test.go-4-4: score:0.49 failed:43, passed:42, compile error:4, out of coverage:9, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089371360/jobs/9146988580

pkg/vfs/vfs_test.go-1-4: score:0.48 failed:50, passed:46, compile error:31, out of coverage:7, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089371360/jobs/9146989076

cmd/object_test.go-1-1: score:0.25 failed:71, passed:24, compile error:11, out of coverage:4, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089371360/jobs/9146988088

pkg/vfs/vfs_test.go-3-4: score:0.38 failed:73, passed:44, compile error:14, out of coverage:3, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089371360/jobs/9146989335

pkg/vfs/vfs_test.go-2-4: score:0.25 failed:96, passed:32, compile error:0, out of coverage:6, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089371360/jobs/9146989190

pkg/vfs/vfs_test.go-4-4: score:0.52 failed:50, passed:55, compile error:10, out of coverage:17, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089371360/jobs/9146989463

pkg/fs/fs_test.go-3-4: score:0.44 failed:45, passed:35, compile error:4, out of coverage:17, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5089371360/jobs/9146988464 

Usage: https://github.com/juicedata/juicefs/blob/main/.github/scripts/mutate/how_to_use_mutate_test.md
github-actions[bot]: <!-- add-pr-comment:add-pr-comment -->

*Mutate Test Report*
pkg/meta/benchmarks_test.go-1-1: score:0.00 failed:0, passed:0, compile error:0, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108131004/jobs/9181699450

pkg/usage/usage_test.go-1-1: score:0.23 failed:10, passed:3, compile error:1, out of coverage:3, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108131004/jobs/9181699483

pkg/fs/fs_test.go-1-4: score:0.50 failed:17, passed:17, compile error:20, out of coverage:46, skip by comment:0, others:1
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108131004/jobs/9181699314

cmd/mount_test.go-4-4: score:1.00 failed:0, passed:16, compile error:4, out of coverage:0, skip by comment:0, others:38
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108131004/jobs/9181699238

pkg/fs/fs_test.go-2-4: score:0.19 failed:51, passed:12, compile error:10, out of coverage:28, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108131004/jobs/9181699348

pkg/fuse/fuse_test.go-1-1: score:0.21 failed:49, passed:13, compile error:11, out of coverage:37, skip by comment:0, others:1
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108131004/jobs/9181699430

pkg/fs/fs_test.go-4-4: score:0.49 failed:43, passed:42, compile error:4, out of coverage:9, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108131004/jobs/9181699397

cmd/mount_test.go-1-4: score:1.00 failed:0, passed:52, compile error:9, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108131004/jobs/9181699109

cmd/mount_test.go-2-4: score:1.00 failed:0, passed:55, compile error:2, out of coverage:4, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108131004/jobs/9181699161

cmd/mount_test.go-3-4: score:1.00 failed:0, passed:59, compile error:2, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108131004/jobs/9181699203

cmd/object_test.go-1-1: score:0.25 failed:71, passed:24, compile error:11, out of coverage:4, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108131004/jobs/9181699276

pkg/vfs/vfs_test.go-1-4: score:0.48 failed:50, passed:46, compile error:31, out of coverage:7, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108131004/jobs/9181699512

pkg/vfs/vfs_test.go-3-4: score:0.38 failed:73, passed:44, compile error:14, out of coverage:3, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108131004/jobs/9181699584

pkg/fs/fs_test.go-3-4: score:0.44 failed:45, passed:35, compile error:4, out of coverage:17, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108131004/jobs/9181699371

pkg/vfs/vfs_test.go-2-4: score:0.25 failed:96, passed:32, compile error:0, out of coverage:6, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108131004/jobs/9181699551

pkg/vfs/vfs_test.go-4-4: score:0.52 failed:50, passed:55, compile error:10, out of coverage:17, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108131004/jobs/9181699620 

Usage: https://github.com/juicedata/juicefs/blob/main/.github/scripts/mutate/how_to_use_mutate_test.md
github-actions[bot]: <!-- add-pr-comment:add-pr-comment -->

*Mutate Test Report*
pkg/meta/benchmarks_test.go-1-1: score:0.00 failed:0, passed:0, compile error:0, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108226831/jobs/9181863631

pkg/usage/usage_test.go-1-1: score:0.23 failed:10, passed:3, compile error:1, out of coverage:3, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108226831/jobs/9181863657

pkg/fs/fs_test.go-1-4: score:0.50 failed:17, passed:17, compile error:18, out of coverage:48, skip by comment:0, others:1
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108226831/jobs/9181863420

cmd/mount_test.go-4-4: score:1.00 failed:0, passed:16, compile error:4, out of coverage:0, skip by comment:0, others:38
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108226831/jobs/9181863300

pkg/fs/fs_test.go-2-4: score:0.17 failed:58, passed:12, compile error:10, out of coverage:21, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108226831/jobs/9181863471

pkg/fs/fs_test.go-4-4: score:0.49 failed:43, passed:42, compile error:4, out of coverage:9, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108226831/jobs/9181863558

pkg/fuse/fuse_test.go-1-1: score:0.21 failed:49, passed:13, compile error:11, out of coverage:37, skip by comment:0, others:1
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108226831/jobs/9181863602

cmd/mount_test.go-1-4: score:1.00 failed:0, passed:52, compile error:9, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108226831/jobs/9181863133

cmd/mount_test.go-2-4: score:1.00 failed:0, passed:55, compile error:2, out of coverage:4, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108226831/jobs/9181863199

cmd/mount_test.go-3-4: score:1.00 failed:0, passed:59, compile error:2, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108226831/jobs/9181863242

pkg/vfs/vfs_test.go-1-4: score:0.48 failed:50, passed:46, compile error:31, out of coverage:7, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108226831/jobs/9181863683

cmd/object_test.go-1-1: score:0.25 failed:71, passed:24, compile error:11, out of coverage:4, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108226831/jobs/9181863363

pkg/vfs/vfs_test.go-3-4: score:0.38 failed:73, passed:44, compile error:14, out of coverage:3, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108226831/jobs/9181863750

pkg/fs/fs_test.go-3-4: score:0.41 failed:46, passed:32, compile error:3, out of coverage:20, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108226831/jobs/9181863508

pkg/vfs/vfs_test.go-2-4: score:0.25 failed:96, passed:32, compile error:0, out of coverage:6, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108226831/jobs/9181863719

pkg/vfs/vfs_test.go-4-4: score:0.52 failed:50, passed:55, compile error:10, out of coverage:17, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108226831/jobs/9181863793 

Usage: https://github.com/juicedata/juicefs/blob/main/.github/scripts/mutate/how_to_use_mutate_test.md
github-actions[bot]: <!-- add-pr-comment:add-pr-comment -->

*Mutate Test Report*
pkg/meta/benchmarks_test.go-1-1: score:0.00 failed:0, passed:0, compile error:0, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108899349/jobs/9183173015

pkg/usage/usage_test.go-1-1: score:0.23 failed:10, passed:3, compile error:1, out of coverage:3, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108899349/jobs/9183173076

pkg/fs/fs_test.go-1-4: score:0.50 failed:17, passed:17, compile error:21, out of coverage:45, skip by comment:0, others:1
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108899349/jobs/9183172591

pkg/fs/fs_test.go-2-4: score:0.16 failed:59, passed:11, compile error:10, out of coverage:21, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108899349/jobs/9183172688

cmd/mount_test.go-4-4: score:1.00 failed:0, passed:16, compile error:4, out of coverage:0, skip by comment:0, others:38
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108899349/jobs/9183172431

pkg/fs/fs_test.go-4-4: score:0.49 failed:43, passed:42, compile error:4, out of coverage:9, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108899349/jobs/9183172843

cmd/mount_test.go-1-4: score:1.00 failed:0, passed:52, compile error:9, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108899349/jobs/9183172190

pkg/fuse/fuse_test.go-1-1: score:0.21 failed:49, passed:13, compile error:11, out of coverage:37, skip by comment:0, others:1
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108899349/jobs/9183172942

cmd/mount_test.go-3-4: score:1.00 failed:0, passed:59, compile error:2, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108899349/jobs/9183172364

cmd/mount_test.go-2-4: score:1.00 failed:0, passed:55, compile error:2, out of coverage:4, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108899349/jobs/9183172289

pkg/vfs/vfs_test.go-1-4: score:0.48 failed:50, passed:46, compile error:31, out of coverage:7, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108899349/jobs/9183173148

cmd/object_test.go-1-1: score:0.25 failed:71, passed:24, compile error:11, out of coverage:4, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108899349/jobs/9183172514

pkg/vfs/vfs_test.go-3-4: score:0.38 failed:73, passed:44, compile error:14, out of coverage:3, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108899349/jobs/9183173275

pkg/fs/fs_test.go-3-4: score:0.42 failed:46, passed:34, compile error:4, out of coverage:17, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108899349/jobs/9183172763

pkg/vfs/vfs_test.go-4-4: score:0.52 failed:50, passed:55, compile error:10, out of coverage:17, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108899349/jobs/9183173347

pkg/vfs/vfs_test.go-2-4: score:0.25 failed:96, passed:32, compile error:0, out of coverage:6, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108899349/jobs/9183173219 

Usage: https://github.com/juicedata/juicefs/blob/main/.github/scripts/mutate/how_to_use_mutate_test.md
github-actions[bot]: <!-- add-pr-comment:add-pr-comment -->

*Mutate Test Report*
pkg/meta/benchmarks_test.go-1-1: score:0.00 failed:0, passed:0, compile error:0, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108976096/jobs/9183346020

pkg/usage/usage_test.go-1-1: score:0.23 failed:10, passed:3, compile error:1, out of coverage:3, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108976096/jobs/9183346131

pkg/fs/fs_test.go-1-4: score:0.50 failed:17, passed:17, compile error:21, out of coverage:45, skip by comment:0, others:1
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108976096/jobs/9183345336

cmd/mount_test.go-4-4: score:1.00 failed:0, passed:16, compile error:4, out of coverage:0, skip by comment:0, others:38
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108976096/jobs/9183345045

pkg/fs/fs_test.go-2-4: score:0.17 failed:58, passed:12, compile error:10, out of coverage:21, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108976096/jobs/9183345489

pkg/fs/fs_test.go-4-4: score:0.49 failed:43, passed:42, compile error:4, out of coverage:9, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108976096/jobs/9183345733

pkg/fuse/fuse_test.go-1-1: score:0.21 failed:49, passed:13, compile error:11, out of coverage:37, skip by comment:0, others:1
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108976096/jobs/9183345889

cmd/mount_test.go-1-4: score:1.00 failed:0, passed:52, compile error:9, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108976096/jobs/9183344645

cmd/mount_test.go-2-4: score:1.00 failed:0, passed:55, compile error:2, out of coverage:4, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108976096/jobs/9183344812

cmd/mount_test.go-3-4: score:1.00 failed:0, passed:59, compile error:2, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108976096/jobs/9183344928

cmd/object_test.go-1-1: score:0.25 failed:71, passed:24, compile error:11, out of coverage:4, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108976096/jobs/9183345178

pkg/vfs/vfs_test.go-1-4: score:0.48 failed:50, passed:46, compile error:31, out of coverage:7, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108976096/jobs/9183346240

pkg/vfs/vfs_test.go-3-4: score:0.38 failed:73, passed:44, compile error:14, out of coverage:3, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108976096/jobs/9183346447

pkg/fs/fs_test.go-3-4: score:0.42 failed:46, passed:34, compile error:4, out of coverage:17, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108976096/jobs/9183345611

pkg/vfs/vfs_test.go-2-4: score:0.25 failed:96, passed:32, compile error:0, out of coverage:6, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108976096/jobs/9183346348

pkg/vfs/vfs_test.go-4-4: score:0.52 failed:50, passed:55, compile error:10, out of coverage:17, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5108976096/jobs/9183346556 

Usage: https://github.com/juicedata/juicefs/blob/main/.github/scripts/mutate/how_to_use_mutate_test.md
github-actions[bot]: <!-- add-pr-comment:add-pr-comment -->

*Mutate Test Report*
pkg/meta/benchmarks_test.go-1-1: score:0.00 failed:0, passed:0, compile error:0, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109220746/jobs/9183823047

pkg/usage/usage_test.go-1-1: score:0.23 failed:10, passed:3, compile error:1, out of coverage:3, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109220746/jobs/9183823108

pkg/fs/fs_test.go-1-4: score:0.50 failed:17, passed:17, compile error:21, out of coverage:45, skip by comment:0, others:1
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109220746/jobs/9183822733

cmd/mount_test.go-4-4: score:1.00 failed:0, passed:16, compile error:4, out of coverage:0, skip by comment:0, others:38
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109220746/jobs/9183822590

pkg/fuse/fuse_test.go-1-1: score:0.21 failed:49, passed:13, compile error:11, out of coverage:37, skip by comment:0, others:1
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109220746/jobs/9183822979

pkg/fs/fs_test.go-4-4: score:0.49 failed:43, passed:42, compile error:4, out of coverage:9, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109220746/jobs/9183822922

pkg/fs/fs_test.go-2-4: score:0.17 failed:58, passed:12, compile error:10, out of coverage:21, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109220746/jobs/9183822797

cmd/mount_test.go-2-4: score:1.00 failed:0, passed:52, compile error:2, out of coverage:7, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109220746/jobs/9183822423

cmd/mount_test.go-3-4: score:1.00 failed:0, passed:59, compile error:2, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109220746/jobs/9183822496

cmd/mount_test.go-1-4: score:1.00 failed:0, passed:52, compile error:9, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109220746/jobs/9183822323

pkg/vfs/vfs_test.go-1-4: score:0.48 failed:50, passed:46, compile error:31, out of coverage:7, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109220746/jobs/9183823176

cmd/object_test.go-1-1: score:0.25 failed:71, passed:24, compile error:11, out of coverage:4, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109220746/jobs/9183822660

pkg/vfs/vfs_test.go-3-4: score:0.38 failed:73, passed:44, compile error:14, out of coverage:3, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109220746/jobs/9183823320

pkg/fs/fs_test.go-3-4: score:0.42 failed:46, passed:34, compile error:4, out of coverage:17, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109220746/jobs/9183822858

pkg/vfs/vfs_test.go-2-4: score:0.25 failed:96, passed:32, compile error:0, out of coverage:6, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109220746/jobs/9183823239

pkg/vfs/vfs_test.go-4-4: score:0.52 failed:50, passed:55, compile error:10, out of coverage:17, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109220746/jobs/9183823409 

Usage: https://github.com/juicedata/juicefs/blob/main/.github/scripts/mutate/how_to_use_mutate_test.md
github-actions[bot]: <!-- add-pr-comment:add-pr-comment -->

*Mutate Test Report*
pkg/meta/benchmarks_test.go-1-1: score:0.00 failed:0, passed:0, compile error:0, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109249224/jobs/9183874699

pkg/usage/usage_test.go-1-1: score:0.23 failed:10, passed:3, compile error:1, out of coverage:3, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109249224/jobs/9183874786

pkg/fs/fs_test.go-1-4: score:0.50 failed:17, passed:17, compile error:21, out of coverage:45, skip by comment:0, others:1
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109249224/jobs/9183874374

cmd/mount_test.go-4-4: score:1.00 failed:0, passed:16, compile error:4, out of coverage:0, skip by comment:0, others:38
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109249224/jobs/9183874239

pkg/fs/fs_test.go-4-4: score:0.49 failed:43, passed:42, compile error:4, out of coverage:9, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109249224/jobs/9183874553

pkg/fs/fs_test.go-2-4: score:0.17 failed:58, passed:12, compile error:10, out of coverage:21, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109249224/jobs/9183874431

pkg/fuse/fuse_test.go-1-1: score:0.21 failed:49, passed:13, compile error:11, out of coverage:37, skip by comment:0, others:1
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109249224/jobs/9183874618

cmd/mount_test.go-2-4: score:1.00 failed:0, passed:52, compile error:2, out of coverage:7, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109249224/jobs/9183874013

cmd/mount_test.go-1-4: score:1.00 failed:0, passed:52, compile error:9, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109249224/jobs/9183873933

cmd/mount_test.go-3-4: score:1.00 failed:0, passed:59, compile error:2, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109249224/jobs/9183874141

pkg/vfs/vfs_test.go-1-4: score:0.48 failed:50, passed:46, compile error:31, out of coverage:7, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109249224/jobs/9183874843

pkg/vfs/vfs_test.go-3-4: score:0.38 failed:73, passed:44, compile error:14, out of coverage:3, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109249224/jobs/9183874987

cmd/object_test.go-1-1: score:0.25 failed:71, passed:24, compile error:11, out of coverage:4, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109249224/jobs/9183874301

pkg/fs/fs_test.go-3-4: score:0.41 failed:46, passed:32, compile error:3, out of coverage:20, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109249224/jobs/9183874492

pkg/vfs/vfs_test.go-2-4: score:0.25 failed:96, passed:32, compile error:0, out of coverage:6, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109249224/jobs/9183874912

pkg/vfs/vfs_test.go-4-4: score:0.52 failed:50, passed:55, compile error:10, out of coverage:17, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109249224/jobs/9183875064 

Usage: https://github.com/juicedata/juicefs/blob/main/.github/scripts/mutate/how_to_use_mutate_test.md
github-actions[bot]: <!-- add-pr-comment:add-pr-comment -->

*Mutate Test Report*
pkg/meta/benchmarks_test.go-1-1: score:0.00 failed:0, passed:0, compile error:0, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109461542/jobs/9184335983

pkg/usage/usage_test.go-1-1: score:0.23 failed:10, passed:3, compile error:1, out of coverage:3, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109461542/jobs/9184336097

pkg/fs/fs_test.go-1-4: score:0.50 failed:17, passed:17, compile error:20, out of coverage:46, skip by comment:0, others:1
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109461542/jobs/9184335420

cmd/mount_test.go-4-4: score:1.00 failed:0, passed:16, compile error:4, out of coverage:0, skip by comment:0, others:38
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109461542/jobs/9184335126

pkg/fs/fs_test.go-2-4: score:0.18 failed:55, passed:12, compile error:10, out of coverage:24, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109461542/jobs/9184335531

pkg/fs/fs_test.go-4-4: score:0.49 failed:43, passed:42, compile error:4, out of coverage:9, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109461542/jobs/9184335754

pkg/fuse/fuse_test.go-1-1: score:0.21 failed:49, passed:13, compile error:11, out of coverage:37, skip by comment:0, others:1
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109461542/jobs/9184335844

cmd/mount_test.go-2-4: score:1.00 failed:0, passed:52, compile error:2, out of coverage:7, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109461542/jobs/9184334907

cmd/mount_test.go-1-4: score:1.00 failed:0, passed:52, compile error:9, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109461542/jobs/9184334778

cmd/mount_test.go-3-4: score:1.00 failed:0, passed:59, compile error:2, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109461542/jobs/9184335025

pkg/vfs/vfs_test.go-1-4: score:0.48 failed:50, passed:46, compile error:31, out of coverage:7, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109461542/jobs/9184336204

cmd/object_test.go-1-1: score:0.25 failed:71, passed:24, compile error:11, out of coverage:4, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109461542/jobs/9184335257

pkg/vfs/vfs_test.go-3-4: score:0.38 failed:73, passed:44, compile error:14, out of coverage:3, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109461542/jobs/9184336417

pkg/fs/fs_test.go-3-4: score:0.41 failed:46, passed:32, compile error:3, out of coverage:20, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109461542/jobs/9184335646

pkg/vfs/vfs_test.go-2-4: score:0.25 failed:96, passed:32, compile error:0, out of coverage:6, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109461542/jobs/9184336298

pkg/vfs/vfs_test.go-4-4: score:0.52 failed:50, passed:55, compile error:10, out of coverage:17, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5109461542/jobs/9184336533 

Usage: https://github.com/juicedata/juicefs/blob/main/.github/scripts/mutate/how_to_use_mutate_test.md
github-actions[bot]: <!-- add-pr-comment:add-pr-comment -->

*Mutate Test Report*
pkg/meta/benchmarks_test.go-1-1: score:0.00 failed:0, passed:0, compile error:0, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111574578/jobs/9188725883

pkg/usage/usage_test.go-1-1: score:0.23 failed:10, passed:3, compile error:1, out of coverage:3, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111574578/jobs/9188725967

pkg/fs/fs_test.go-1-4: score:0.50 failed:17, passed:17, compile error:21, out of coverage:45, skip by comment:0, others:1
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111574578/jobs/9188725513

pkg/fs/fs_test.go-4-4: score:0.49 failed:43, passed:42, compile error:4, out of coverage:9, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111574578/jobs/9188725730

cmd/mount_test.go-4-4: score:1.00 failed:0, passed:16, compile error:4, out of coverage:0, skip by comment:0, others:38
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111574578/jobs/9188725339

pkg/fuse/fuse_test.go-1-1: score:0.21 failed:49, passed:13, compile error:11, out of coverage:37, skip by comment:0, others:1
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111574578/jobs/9188725807

pkg/fs/fs_test.go-2-4: score:0.17 failed:58, passed:12, compile error:10, out of coverage:21, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111574578/jobs/9188725586

cmd/mount_test.go-3-4: score:1.00 failed:0, passed:59, compile error:2, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111574578/jobs/9188725262

cmd/mount_test.go-1-4: score:1.00 failed:0, passed:52, compile error:9, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111574578/jobs/9188725084

cmd/mount_test.go-2-4: score:1.00 failed:0, passed:51, compile error:2, out of coverage:8, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111574578/jobs/9188725187

pkg/vfs/vfs_test.go-1-4: score:0.48 failed:50, passed:46, compile error:31, out of coverage:7, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111574578/jobs/9188726014

pkg/vfs/vfs_test.go-3-4: score:0.38 failed:73, passed:44, compile error:14, out of coverage:3, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111574578/jobs/9188726136

cmd/object_test.go-1-1: score:0.25 failed:71, passed:24, compile error:11, out of coverage:4, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111574578/jobs/9188725440

pkg/fs/fs_test.go-3-4: score:0.44 failed:45, passed:35, compile error:4, out of coverage:17, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111574578/jobs/9188725654

pkg/vfs/vfs_test.go-2-4: score:0.25 failed:96, passed:32, compile error:0, out of coverage:6, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111574578/jobs/9188726075

pkg/vfs/vfs_test.go-4-4: score:0.52 failed:50, passed:55, compile error:10, out of coverage:17, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111574578/jobs/9188726197 

Usage: https://github.com/juicedata/juicefs/blob/main/.github/scripts/mutate/how_to_use_mutate_test.md
github-actions[bot]: <!-- add-pr-comment:add-pr-comment -->

*Mutate Test Report*
pkg/meta/benchmarks_test.go-1-1: score:0.00 failed:0, passed:0, compile error:0, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111565847/jobs/9188710838

pkg/usage/usage_test.go-1-1: score:0.23 failed:10, passed:3, compile error:1, out of coverage:3, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111565847/jobs/9188710917

pkg/fs/fs_test.go-1-4: score:0.50 failed:17, passed:17, compile error:18, out of coverage:48, skip by comment:0, others:1
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111565847/jobs/9188710434

cmd/mount_test.go-4-4: score:1.00 failed:0, passed:16, compile error:4, out of coverage:0, skip by comment:0, others:38
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111565847/jobs/9188710251

pkg/fs/fs_test.go-2-4: score:0.17 failed:58, passed:12, compile error:10, out of coverage:21, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111565847/jobs/9188710516

pkg/fs/fs_test.go-4-4: score:0.49 failed:43, passed:42, compile error:4, out of coverage:9, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111565847/jobs/9188710681

pkg/fuse/fuse_test.go-1-1: score:0.21 failed:49, passed:13, compile error:11, out of coverage:37, skip by comment:0, others:1
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111565847/jobs/9188710771

cmd/mount_test.go-1-4: score:1.00 failed:0, passed:52, compile error:9, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111565847/jobs/9188709917

cmd/mount_test.go-3-4: score:1.00 failed:0, passed:59, compile error:2, out of coverage:0, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111565847/jobs/9188710161

cmd/mount_test.go-2-4: score:1.00 failed:0, passed:51, compile error:2, out of coverage:8, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111565847/jobs/9188710056

pkg/vfs/vfs_test.go-1-4: score:0.48 failed:50, passed:46, compile error:31, out of coverage:7, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111565847/jobs/9188710991

cmd/object_test.go-1-1: score:0.25 failed:71, passed:24, compile error:11, out of coverage:4, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111565847/jobs/9188710334

pkg/vfs/vfs_test.go-3-4: score:0.38 failed:73, passed:44, compile error:14, out of coverage:3, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111565847/jobs/9188711121

pkg/vfs/vfs_test.go-2-4: score:0.25 failed:96, passed:32, compile error:0, out of coverage:6, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111565847/jobs/9188711063

pkg/fs/fs_test.go-3-4: score:0.42 failed:46, passed:34, compile error:4, out of coverage:17, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111565847/jobs/9188710611

pkg/vfs/vfs_test.go-4-4: score:0.52 failed:50, passed:55, compile error:10, out of coverage:17, skip by comment:0, others:0
Job detail: https://github.com/juicedata/juicefs/actions/runs/5111565847/jobs/9188711178 

Usage: https://github.com/juicedata/juicefs/blob/main/.github/scripts/mutate/how_to_use_mutate_test.md

Patch:
diff --git a/cmd/config.go b/cmd/config.go
index f780099d..48b8cf09 100644
--- a/cmd/config.go
+++ b/cmd/config.go
@@ -25,6 +25,7 @@ import (
 
 	"github.com/juicedata/juicefs/pkg/meta"
 	"github.com/juicedata/juicefs/pkg/version"
+	"github.com/pkg/errors"
 	"github.com/urfave/cli/v2"
 )
 
@@ -80,6 +81,10 @@ func configManagementFlags() []cli.Flag {
 			Name:  "download-limit",
 			Usage: "default bandwidth limit of the volume for download in Mbps",
 		},
+		&cli.BoolFlag{
+			Name:  "dir-stats",
+			Usage: "enable dir stats, which is necessary for fast summary and dir quota",
+		},
 	})
 }
 
@@ -130,6 +135,7 @@ func config(ctx *cli.Context) error {
 		return nil
 	}
 
+	originDirStats := format.DirStats
 	var quota, storage, trash, clientVer bool
 	var msg strings.Builder
 	encrypted := format.KeyEncrypted
@@ -211,6 +217,11 @@ func config(ctx *cli.Context) error {
 				format.TrashDays = new
 				trash = true
 			}
+		case "dir-stats":
+			if new := ctx.Bool(flag); new != format.DirStats {
+				msg.WriteString(fmt.Sprintf("%10s: %t -> %t\n", flag, format.DirStats, new))
+				format.DirStats = new
+			}
 		case "min-client-version":
 			if new := ctx.String(flag); new != format.MinClientVersion {
 				if version.Parse(new) == nil {
@@ -266,6 +277,20 @@ func config(ctx *cli.Context) error {
 				return fmt.Errorf("Aborted.")
 			}
 		}
+		if originDirStats && !format.DirStats {
+			qs := make(map[string]*meta.Quota)
+			err := m.HandleQuota(meta.Background, meta.QuotaList, "", qs, false, false)
+			if err != nil {
+				return errors.Wrap(err, "list quotas")
+			}
+			if len(qs) != 0 {
+				paths := make([]string, 0, len(qs))
+				for path := range qs {
+					paths = append(paths, path)
+				}
+				return fmt.Errorf("cannot disable dir stats when there are still %d dir quotas: %v", len(qs), paths)
+			}
+		}
 		if clientVer && format.CheckVersion() != nil {
 			warn("Clients with the same version of this will be rejected after modification.")
 			if !yes && !userConfirmed() {
diff --git a/cmd/format.go b/cmd/format.go
index 1a572c9c..4e3c542f 100644
--- a/cmd/format.go
+++ b/cmd/format.go
@@ -433,6 +433,7 @@ func format(c *cli.Context) error {
 			BlockSize:    fixObjectSize(c.Int("block-size")),
 			Compression:  c.String("compress"),
 			TrashDays:    c.Int("trash-days"),
+			DirStats:     true,
 			MetaVersion:  meta.MaxVersion,
 		}
 		if format.AccessKey == "" && os.Getenv("ACCESS_KEY") != "" {
diff --git a/pkg/meta/base.go b/pkg/meta/base.go
index d6087613..10e53ab5 100644
--- a/pkg/meta/base.go
+++ b/pkg/meta/base.go
@@ -63,6 +63,7 @@ type engine interface {
 	doRefreshSession() error
 	doFindStaleSessions(limit int) ([]uint64, error) // limit < 0 means all
 	doCleanStaleSession(sid uint64) error
+	doInit(format *Format, force bool) error
 
 	scanAllChunks(ctx Context, ch chan<- cchunk, bar *utils.Bar) error
 	compactChunk(inode Ino, indx uint32, force bool)
@@ -332,6 +333,9 @@ func (m *baseMeta) GetDirStat(ctx Context, inode Ino) (stat *dirStat, st syscall
 }
 
 func (m *baseMeta) updateDirStat(ctx Context, ino Ino, length, space, inodes int64) {
+	if !m.GetFormat().DirStats {
+		return
+	}
 	m.dirStatsLock.Lock()
 	defer m.dirStatsLock.Unlock()
 	stat := m.dirStats[ino]
@@ -346,6 +350,9 @@ func (m *baseMeta) updateParentStat(ctx Context, inode, parent Ino, length, spac
 		return
 	}
 	m.en.updateStats(space, 0)
+	if !m.GetFormat().DirStats {
+		return
+	}
 	if parent > 0 {
 		m.updateDirStat(ctx, parent, length, space, 0)
 		m.updateDirQuota(ctx, parent, space, 0)
@@ -371,6 +378,9 @@ func (m *baseMeta) flushDirStat() {
 }
 
 func (m *baseMeta) doFlushDirStat() {
+	if !m.GetFormat().DirStats {
+		return
+	}
 	m.dirStatsLock.Lock()
 	if len(m.dirStats) == 0 {
 		m.dirStatsLock.Unlock()
@@ -610,6 +620,9 @@ func (m *baseMeta) checkQuota(ctx Context, space, inodes int64, parents ...Ino)
 	if inodes > 0 && m.fmt.Inodes > 0 && atomic.LoadInt64(&m.usedInodes)+atomic.LoadInt64(&m.newInodes)+inodes > int64(m.fmt.Inodes) {
 		return syscall.ENOSPC
 	}
+	if !m.GetFormat().DirStats {
+		return 0
+	}
 	for _, ino := range parents {
 		if m.checkDirQuota(ctx, ino, space, inodes) {
 			return syscall.EDQUOT
@@ -663,6 +676,9 @@ func (m *baseMeta) getDirParent(ctx Context, inode Ino) (Ino, syscall.Errno) {
 }
 
 func (m *baseMeta) hasDirQuota(ctx Context, inode Ino) bool {
+	if !m.GetFormat().DirStats {
+		return false
+	}
 	var q *Quota
 	var st syscall.Errno
 	for {
@@ -684,6 +700,9 @@ func (m *baseMeta) hasDirQuota(ctx Context, inode Ino) bool {
 }
 
 func (m *baseMeta) checkDirQuota(ctx Context, inode Ino, space, inodes int64) bool {
+	if !m.GetFormat().DirStats {
+		return false
+	}
 	var q *Quota
 	var st syscall.Errno
 	for {
@@ -705,6 +724,9 @@ func (m *baseMeta) checkDirQuota(ctx Context, inode Ino, space, inodes int64) bo
 }
 
 func (m *baseMeta) updateDirQuota(ctx Context, inode Ino, space, inodes int64) {
+	if !m.GetFormat().DirStats {
+		return
+	}
 	var q *Quota
 	var st syscall.Errno
 	for {
@@ -729,6 +751,9 @@ func (m *baseMeta) flushQuotas() {
 	var newSpace, newInodes int64
 	for {
 		time.Sleep(time.Second * 3)
+		if !m.GetFormat().DirStats {
+			continue
+		}
 		m.quotaMu.RLock()
 		for ino, q := range m.dirQuotas {
 			newSpace = atomic.LoadInt64(&q.newSpace)
@@ -761,6 +786,10 @@ func (m *baseMeta) flushQuotas() {
 	}
 }
 
+func (m *baseMeta) Init(format *Format, force bool) error {
+	return m.en.doInit(format, force)
+}
+
 func (m *baseMeta) HandleQuota(ctx Context, cmd uint8, dpath string, quotas map[string]*Quota, strict, repair bool) error {
 	var inode Ino
 	if cmd != QuotaList {
@@ -774,6 +803,16 @@ func (m *baseMeta) HandleQuota(ctx Context, cmd uint8, dpath string, quotas map[
 
 	switch cmd {
 	case QuotaSet:
+		format, err := m.Load(false)
+		if err != nil {
+			return errors.Wrap(err, "load format")
+		}
+		if !format.DirStats {
+			format.DirStats = true
+			if err := m.en.doInit(format, false); err != nil {
+				return err
+			}
+		}
 		q, err := m.en.doGetQuota(ctx, inode)
 		if err != nil {
 			return err
@@ -2035,6 +2074,13 @@ func (m *baseMeta) resolve(ctx Context, dpath string, inode *Ino) syscall.Errno
 }
 
 func (m *baseMeta) GetFormat() Format {
+	if m.fmt == nil {
+		var err error
+		m.fmt, err = m.Load(false)
+		if err != nil {
+			logger.Fatalf("Load format: %s", err)
+		}
+	}
 	return *m.fmt
 }
 
diff --git a/pkg/meta/config.go b/pkg/meta/config.go
index 59a1b149..c679baef 100644
--- a/pkg/meta/config.go
+++ b/pkg/meta/config.go
@@ -90,6 +90,7 @@ type Format struct {
 	MetaVersion      int    `json:",omitempty"`
 	MinClientVersion string `json:",omitempty"`
 	MaxClientVersion string `json:",omitempty"`
+	DirStats         bool   `json:",omitempty"`
 }
 
 func (f *Format) update(old *Format, force bool) error {
diff --git a/pkg/meta/redis.go b/pkg/meta/redis.go
index df440314..6c6782bd 100644
--- a/pkg/meta/redis.go
+++ b/pkg/meta/redis.go
@@ -264,7 +264,7 @@ func (m *redisMeta) Name() string {
 	return "redis"
 }
 
-func (m *redisMeta) Init(format *Format, force bool) error {
+func (m *redisMeta) doInit(format *Format, force bool) error {
 	ctx := Background
 	body, err := m.rdb.Get(ctx, m.setting()).Bytes()
 	if err != nil && err != redis.Nil {
@@ -276,8 +276,15 @@ func (m *redisMeta) Init(format *Format, force bool) error {
 		if err != nil {
 			return fmt.Errorf("existing format is broken: %s", err)
 		}
+		if !old.DirStats && format.DirStats {
+			// remove dir stats as they are outdated
+			err := m.rdb.Del(ctx, m.dirUsedInodesKey(), m.dirUsedSpaceKey()).Err()
+			if err != nil {
+				return errors.Wrap(err, "remove dir stats")
+			}
+		}
 		if err = format.update(&old, force); err != nil {
-			return err
+			return errors.Wrap(err, "update format")
 		}
 	}
 
diff --git a/pkg/meta/sql.go b/pkg/meta/sql.go
index 7c4cfe47..8a019ac8 100644
--- a/pkg/meta/sql.go
+++ b/pkg/meta/sql.go
@@ -280,7 +280,7 @@ func (m *dbMeta) syncTable(beans ...interface{}) error {
 	return err
 }
 
-func (m *dbMeta) Init(format *Format, force bool) error {
+func (m *dbMeta) doInit(format *Format, force bool) error {
 	if err := m.syncTable(new(setting), new(counter)); err != nil {
 		return fmt.Errorf("create table setting, counter: %s", err)
 	}
@@ -322,8 +322,15 @@ func (m *dbMeta) Init(format *Format, force bool) error {
 		if err != nil {
 			return fmt.Errorf("json: %s", err)
 		}
+		if !old.DirStats && format.DirStats {
+			// remove dir stats as they are outdated
+			_, err = m.db.Where("TRUE").Delete(new(dirStats))
+			if err != nil {
+				return errors.Wrap(err, "drop table dirStats")
+			}
+		}
 		if err = format.update(&old, force); err != nil {
-			return err
+			return errors.Wrap(err, "update format")
 		}
 	}
 
diff --git a/pkg/meta/tkv.go b/pkg/meta/tkv.go
index 834c1f41..2398680b 100644
--- a/pkg/meta/tkv.go
+++ b/pkg/meta/tkv.go
@@ -399,7 +399,7 @@ func (m *kvMeta) scanValues(prefix []byte, limit int, filter func(k, v []byte) b
 	return values, err
 }
 
-func (m *kvMeta) Init(format *Format, force bool) error {
+func (m *kvMeta) doInit(format *Format, force bool) error {
 	body, err := m.get(m.fmtKey("setting"))
 	if err != nil {
 		return err
@@ -411,8 +411,29 @@ func (m *kvMeta) Init(format *Format, force bool) error {
 		if err != nil {
 			return fmt.Errorf("json: %s", err)
 		}
+		if !old.DirStats && format.DirStats {
+			// remove dir stats as they are outdated
+			var keys [][]byte
+			prefix := m.fmtKey("U")
+			err := m.client.txn(func(tx *kvTxn) error {
+				tx.scan(prefix, nextKey(prefix), true, func(k, v []byte) bool {
+					if len(k) == 9 {
+						keys = append(keys, k)
+					}
+					return true
+				})
+				return nil
+			}, 0)
+			if err != nil {
+				return errors.Wrap(err, "scan dir stats")
+			}
+			err = m.deleteKeys(keys...)
+			if err != nil {
+				return errors.Wrap(err, "delete dir stats")
+			}
+		}
 		if err = format.update(&old, force); err != nil {
-			return err
+			return errors.Wrap(err, "update format")
 		}
 	}
 
@@ -1887,14 +1908,18 @@ func (m *kvMeta) Write(ctx Context, inode Ino, indx uint32, off uint32, slice Sl
 	err := m.txn(func(tx *kvTxn) error {
 		newLength, newSpace = 0, 0
 		attr = Attr{}
-		a := tx.get(m.inodeKey(inode))
-		if a == nil {
+		rs := tx.gets(m.inodeKey(inode), m.chunkKey(inode, indx))
+		if rs[0] == nil {
 			return syscall.ENOENT
 		}
-		m.parseAttr(a, &attr)
+		m.parseAttr(rs[0], &attr)
 		if attr.Typ != TypeFile {
 			return syscall.EPERM
 		}
+		if len(rs[1])%sliceBytes != 0 {
+			logger.Errorf("Invalid chunk value for inode %d indx %d: %d", inode, indx, len(rs[1]))
+			return syscall.EIO
+		}
 		newleng := uint64(indx)*ChunkSize + uint64(off) + uint64(slice.Len)
 		if newleng > attr.Length {
 			newLength = int64(newleng - attr.Length)
@@ -1909,8 +1934,16 @@ func (m *kvMeta) Write(ctx Context, inode Ino, indx uint32, off uint32, slice Sl
 		attr.Mtimensec = uint32(mtime.Nanosecond())
 		attr.Ctime = now.Unix()
 		attr.Ctimensec = uint32(now.Nanosecond())
-		val := tx.append(m.chunkKey(inode, indx), marshalSlice(off, slice.Id, slice.Size, slice.Off, slice.Len))
+		val := marshalSlice(off, slice.Id, slice.Size, slice.Off, slice.Len)
+		for i := 0; i < len(rs[1]); i += sliceBytes {
+			if bytes.Equal(rs[1][i:i+sliceBytes], val) {
+				logger.Warnf("Write same slice for inode %d indx %d sliceId %d", inode, indx, slice.Id)
+				return nil
+			}
+		}
+		val = append(rs[1], val...)
 		tx.set(m.inodeKey(inode), m.marshal(&attr))
+		tx.set(m.chunkKey(inode, indx), val)
 		needCompact = (len(val)/sliceBytes)%100 == 99
 		return nil
 	}, inode)
diff --git a/pkg/meta/utils.go b/pkg/meta/utils.go
index 2768caee..ab663803 100644
--- a/pkg/meta/utils.go
+++ b/pkg/meta/utils.go
@@ -375,7 +375,7 @@ func (m *baseMeta) GetSummary(ctx Context, inode Ino, summary *Summary, recursiv
 func (m *baseMeta) getDirSummary(ctx Context, inode Ino, summary *Summary, recursive bool, strict bool, concurrent chan struct{}, updateProgress func(count uint64, bytes uint64)) syscall.Errno {
 	var entries []*Entry
 	var err syscall.Errno
-	if strict {
+	if strict || !m.GetFormat().DirStats {
 		err = m.en.doReaddir(ctx, inode, 1, &entries, -1)
 	} else {
 		var st *dirStat
@@ -410,7 +410,7 @@ func (m *baseMeta) getDirSummary(ctx Context, inode Ino, summary *Summary, recur
 		} else {
 			atomic.AddUint64(&summary.Files, 1)
 		}
-		if strict {
+		if strict || !m.fmt.DirStats {
 			atomic.AddUint64(&summary.Size, uint64(align4K(e.Attr.Length)))
 			if e.Attr.Typ == TypeFile {
 				atomic.AddUint64(&summary.Length, e.Attr.Length)


Test patch:
diff --git a/cmd/mount_test.go b/cmd/mount_test.go
index 6d344c29..2bc66792 100644
--- a/cmd/mount_test.go
+++ b/cmd/mount_test.go
@@ -52,6 +52,7 @@ func Test_exposeMetrics(t *testing.T) {
 				Name:      "test",
 				BlockSize: 4096,
 				Capacity:  1 << 30,
+				DirStats:  true,
 			}
 			_ = client.Init(format, true)
 			var appCtx *cli.Context
diff --git a/cmd/object_test.go b/cmd/object_test.go
index 9104489a..8abb323b 100644
--- a/cmd/object_test.go
+++ b/cmd/object_test.go
@@ -148,6 +148,7 @@ func TestJFS(t *testing.T) {
 		Name:      "test",
 		BlockSize: 4096,
 		Capacity:  1 << 30,
+		DirStats:  true,
 	}
 	_ = m.Init(format, true)
 	var conf = vfs.Config{
diff --git a/pkg/fs/fs_test.go b/pkg/fs/fs_test.go
index 3b76995a..379138a9 100644
--- a/pkg/fs/fs_test.go
+++ b/pkg/fs/fs_test.go
@@ -275,6 +275,7 @@ func createTestFS(t *testing.T) *FileSystem {
 		Name:      "test",
 		BlockSize: 4096,
 		Capacity:  1 << 30,
+		DirStats:  true,
 	}
 	_ = m.Init(format, true)
 	var conf = vfs.Config{
diff --git a/pkg/fuse/fuse_test.go b/pkg/fuse/fuse_test.go
index 8b6574e3..74d28142 100644
--- a/pkg/fuse/fuse_test.go
+++ b/pkg/fuse/fuse_test.go
@@ -51,6 +51,7 @@ func format(url string) {
 		Storage:   "file",
 		Bucket:    os.TempDir() + "/",
 		BlockSize: 4096,
+		DirStats:  true,
 	}
 	err := m.Init(format, true)
 	if err != nil {
diff --git a/pkg/meta/base_test.go b/pkg/meta/base_test.go
index ef117336..fdc6567a 100644
--- a/pkg/meta/base_test.go
+++ b/pkg/meta/base_test.go
@@ -45,6 +45,10 @@ func testConfig() *Config {
 	return conf
 }
 
+func testFormat() *Format {
+	return &Format{Name: "test", DirStats: true}
+}
+
 func TestRedisClient(t *testing.T) {
 	m, err := newRedisMeta("redis", "127.0.0.1:6379/10", testConfig())
 	if err != nil || m.Name() != "redis" {
@@ -153,7 +157,7 @@ func testMetaClient(t *testing.T, m Meta) {
 		t.Fatalf("getattr root: %s", st)
 	}
 
-	if err := m.Init(&Format{Name: "test"}, true); err != nil {
+	if err := m.Init(testFormat(), true); err != nil {
 		t.Fatalf("initialize failed: %s", err)
 	}
 	if err := m.Init(&Format{Name: "test2"}, false); err == nil { // not allowed
@@ -700,7 +704,6 @@ func testMetaClient(t *testing.T, m Meta) {
 }
 
 func testStickyBit(t *testing.T, m Meta) {
-	_ = m.Init(&Format{Name: "test"}, false)
 	ctx := Background
 	var sticky, normal, inode Ino
 	var attr = &Attr{}
@@ -767,7 +770,6 @@ func testStickyBit(t *testing.T, m Meta) {
 }
 
 func testListLocks(t *testing.T, m Meta) {
-	_ = m.Init(&Format{Name: "test"}, false)
 	ctx := Background
 	var inode Ino
 	var attr = &Attr{}
@@ -842,7 +844,6 @@ func testListLocks(t *testing.T, m Meta) {
 }
 
 func testLocks(t *testing.T, m Meta) {
-	_ = m.Init(&Format{Name: "test"}, false)
 	ctx := Background
 	var inode Ino
 	var attr = &Attr{}
@@ -979,7 +980,6 @@ func testLocks(t *testing.T, m Meta) {
 }
 
 func testRemove(t *testing.T, m Meta) {
-	_ = m.Init(&Format{Name: "test"}, false)
 	ctx := Background
 	var inode, parent Ino
 	var attr = &Attr{}
@@ -1021,7 +1021,6 @@ func testRemove(t *testing.T, m Meta) {
 }
 
 func testCaseIncensi(t *testing.T, m Meta) {
-	_ = m.Init(&Format{Name: "test"}, false)
 	ctx := Background
 	var inode Ino
 	var attr = &Attr{}
@@ -1070,9 +1069,16 @@ type compactor interface {
 
 func testCompaction(t *testing.T, m Meta, trash bool) {
 	if trash {
-		_ = m.Init(&Format{Name: "test", TrashDays: 1}, false)
+		format := testFormat()
+		format.TrashDays = 1
+		_ = m.Init(format, false)
+		defer func() {
+			if err := m.Init(testFormat(), false); err != nil {
+				t.Fatalf("init: %v", err)
+			}
+		}()
 	} else {
-		_ = m.Init(&Format{Name: "test"}, false)
+		_ = m.Init(testFormat(), false)
 	}
 	var l sync.Mutex
 	deleted := make(map[uint64]int)
@@ -1186,7 +1192,6 @@ func testConcurrentWrite(t *testing.T, m Meta) {
 	m.OnMsg(CompactChunk, func(args ...interface{}) error {
 		return nil
 	})
-	_ = m.Init(&Format{Name: "test"}, false)
 
 	ctx := Background
 	var inode Ino
@@ -1289,7 +1294,6 @@ func testCopyFileRange(t *testing.T, m Meta) {
 	m.OnMsg(DeleteSlice, func(args ...interface{}) error {
 		return nil
 	})
-	_ = m.Init(&Format{Name: "test"}, false)
 
 	ctx := Background
 	var iin, iout Ino
@@ -1339,7 +1343,6 @@ func testCopyFileRange(t *testing.T, m Meta) {
 }
 
 func testCloseSession(t *testing.T, m Meta) {
-	_ = m.Init(&Format{Name: "test"}, false)
 	if err := m.NewSession(); err != nil {
 		t.Fatalf("new session: %s", err)
 	}
@@ -1399,9 +1402,16 @@ func testCloseSession(t *testing.T, m Meta) {
 }
 
 func testTrash(t *testing.T, m Meta) {
-	if err := m.Init(&Format{Name: "test", TrashDays: 1}, false); err != nil {
-		t.Fatalf("init: %s", err)
+	format := testFormat()
+	format.TrashDays = 1
+	if err := m.Init(format, false); err != nil {
+		t.Fatalf("init: %v", err)
 	}
+	defer func() {
+		if err := m.Init(testFormat(), false); err != nil {
+			t.Fatalf("init: %v", err)
+		}
+	}()
 	ctx := Background
 	var inode, parent Ino
 	var attr = &Attr{}
@@ -1495,9 +1505,6 @@ func testTrash(t *testing.T, m Meta) {
 }
 
 func testParents(t *testing.T, m Meta) {
-	if err := m.Init(&Format{Name: "test"}, false); err != nil {
-		t.Fatalf("init: %s", err)
-	}
 	ctx := Background
 	var inode, parent Ino
 	var attr = &Attr{}
@@ -2001,7 +2008,6 @@ func testCheckAndRepair(t *testing.T, m Meta) {
 func testDirStat(t *testing.T, m Meta) {
 	testDir := "testDirStat"
 	var testInode Ino
-
 	// test empty dir
 	if st := m.Mkdir(Background, RootInode, testDir, 0640, 022, 0, &testInode, nil); st != 0 {
 		t.Fatalf("mkdir: %s", st)
diff --git a/pkg/meta/benchmarks_test.go b/pkg/meta/benchmarks_test.go
index 5968195f..1a84c1de 100644
--- a/pkg/meta/benchmarks_test.go
+++ b/pkg/meta/benchmarks_test.go
@@ -622,7 +622,7 @@ func benchmarkData(b *testing.B, m Meta) {
 }
 
 func benchmarkAll(b *testing.B, m Meta) {
-	_ = m.Init(&Format{Name: "benchmarkAll"}, true)
+	_ = m.Init(&Format{Name: "benchmarkAll", DirStats: true}, true)
 	_ = m.NewSession()
 	benchmarkDir(b, m)
 	benchmarkFile(b, m)
diff --git a/pkg/usage/usage_test.go b/pkg/usage/usage_test.go
index 5911567c..21e0c1f4 100644
--- a/pkg/usage/usage_test.go
+++ b/pkg/usage/usage_test.go
@@ -37,6 +37,7 @@ func TestUsageReport(t *testing.T) {
 		Name:      "test",
 		BlockSize: 4096,
 		Capacity:  1 << 30,
+		DirStats:  true,
 	}
 	_ = m.Init(format, true)
 	go ReportUsage(m, "unittest")
diff --git a/pkg/vfs/vfs_test.go b/pkg/vfs/vfs_test.go
index 5d40525a..5b87cc82 100644
--- a/pkg/vfs/vfs_test.go
+++ b/pkg/vfs/vfs_test.go
@@ -48,6 +48,7 @@ func createTestVFS() (*VFS, object.ObjectStorage) {
 		Storage:     "mem",
 		BlockSize:   4096,
 		Compression: "lz4",
+		DirStats:    true,
 	}
 	err := m.Init(format, true)
 	if err != nil {