Skip to content

Commit 0c1fee4

Browse files
authored
Merge pull request #1165 from jiangliu/fix-prefetch
rafs: fix a assertion failure in prefetch list generation
2 parents 5160def + 49fc71e commit 0c1fee4

File tree

1 file changed

+15
-13
lines changed
  • rafs/src/builder/core

1 file changed

+15
-13
lines changed

rafs/src/builder/core/v6.rs

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -708,19 +708,21 @@ impl Bootstrap {
708708
Self::v6_align_to_4k(bootstrap_ctx)?;
709709

710710
// `Node` offset might be updated during above inodes dumping. So `get_prefetch_table` after it.
711-
let prefetch_table = ctx
712-
.prefetch
713-
.get_v6_prefetch_table(&bootstrap_ctx.nodes, meta_addr);
714-
if let Some(mut pt) = prefetch_table {
715-
assert!(pt.len() * size_of::<u32>() <= prefetch_table_size as usize);
716-
// Device slots are very close to extended super block.
717-
ext_sb.set_prefetch_table_offset(prefetch_table_offset);
718-
ext_sb.set_prefetch_table_size(prefetch_table_size);
719-
bootstrap_ctx
720-
.writer
721-
.seek_offset(prefetch_table_offset as u64)
722-
.context("failed seek prefetch table offset")?;
723-
pt.store(bootstrap_ctx.writer.as_mut()).unwrap();
711+
if prefetch_table_size > 0 {
712+
let prefetch_table = ctx
713+
.prefetch
714+
.get_v6_prefetch_table(&bootstrap_ctx.nodes, meta_addr);
715+
if let Some(mut pt) = prefetch_table {
716+
assert!(pt.len() * size_of::<u32>() <= prefetch_table_size as usize);
717+
// Device slots are very close to extended super block.
718+
ext_sb.set_prefetch_table_offset(prefetch_table_offset);
719+
ext_sb.set_prefetch_table_size(prefetch_table_size);
720+
bootstrap_ctx
721+
.writer
722+
.seek_offset(prefetch_table_offset as u64)
723+
.context("failed seek prefetch table offset")?;
724+
pt.store(bootstrap_ctx.writer.as_mut()).unwrap();
725+
}
724726
}
725727

726728
// TODO: get rid of the chunk info array.

0 commit comments

Comments
 (0)