From 684658e7cc2deaa2cf02eb874e4b278675ef9fc2 Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Sun, 20 Mar 2011 18:34:28 +1100 Subject: [PATCH] Add blockbits field to struct lafs We will need it for directory manipulations. Signed-off-by: NeilBrown --- include/lafs/struct.h | 3 ++- lib/lafs_include_dev.c | 5 +++-- lib/lafs_load.c | 2 +- lib/lafs_new.c | 5 +++++ lib/lafs_print_device.c | 2 +- 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/include/lafs/struct.h b/include/lafs/struct.h index 4d97ef2..1d90850 100644 --- a/include/lafs/struct.h +++ b/include/lafs/struct.h @@ -12,6 +12,7 @@ struct lafs { uint32_t seq; int devices; int blocksize; + int blockbits; int statesize; int max_segment; @@ -194,7 +195,7 @@ struct lafs_device { */ char version[16]; uint8_t uuid[16]; - int blocksize; + int blockbits; int statesize; int devices; }; diff --git a/lib/lafs_include_dev.c b/lib/lafs_include_dev.c index 0829ef3..f994f17 100644 --- a/lib/lafs_include_dev.c +++ b/lib/lafs_include_dev.c @@ -12,13 +12,14 @@ int lafs_include_dev(struct lafs *fs, struct lafs_device *dev, char **err) */ if (fs->blocksize == 0) { - fs->blocksize = dev->blocksize; + fs->blocksize = 1<blockbits; + fs->blockbits = dev->blockbits; memcpy(fs->uuid, dev->uuid, 16); fs->statesize = dev->statesize; fs->seq = dev->state_seq; fs->devices = dev->devices; } else { - if (fs->blocksize != dev->blocksize || + if (fs->blocksize != (1<blockbits) || memcmp(fs->uuid, dev->uuid, 16) || fs->statesize != dev->statesize) { *err = "device is inconsistent with other devices in LaFS"; diff --git a/lib/lafs_load.c b/lib/lafs_load.c index 7dca5a2..a4ef56e 100644 --- a/lib/lafs_load.c +++ b/lib/lafs_load.c @@ -240,7 +240,7 @@ struct lafs_device *lafs_load(int fd, long long device_bytes, char **err) memcpy(dev->version, best.version, 16); memcpy(dev->uuid, best.uuid, 16); - dev->blocksize = 1 << best.blockbits; + dev->blockbits = best.blockbits; dev->statesize = 1 << best.statebits; found = 0; diff --git a/lib/lafs_new.c b/lib/lafs_new.c index 0e89fbc..9898e15 100644 --- a/lib/lafs_new.c +++ b/lib/lafs_new.c @@ -7,6 +7,7 @@ int lafs_new(struct lafs *fs, int blockbytes) { int fd; int n; + int blockbits; if (fs->blocksize != 0) return -1; @@ -15,6 +16,9 @@ int lafs_new(struct lafs *fs, int blockbytes) blockbytes > 4096 || (blockbytes & (blockbytes-1)) != 0) return -1; + blockbits = 9; + while ((1<blocksize = blockbytes; + fs->blockbits = blockbits; fs->seq = 1; fs->statesize = 1024; diff --git a/lib/lafs_print_device.c b/lib/lafs_print_device.c index 993b899..81ed800 100644 --- a/lib/lafs_print_device.c +++ b/lib/lafs_print_device.c @@ -28,7 +28,7 @@ void lafs_print_device(struct lafs_device *dev) printf(" SegSize : %lu\n", dev->segment_size); printf(" SegOffs : %lu\n", dev->segment_offset); printf(" SegCount : %lu\n", dev->segment_count); - printf(" BlkSize : %lu\n", (unsigned long)dev->blocksize); + printf(" BlkBits : %lu\n", (unsigned long)dev->blockbits); printf(" UsageInum : %lu\n", (unsigned long)dev->usage_inum); // printf(" Level : %lu\n", (unsigned long)le32_to_cpu(super->level)); printf("\n"); -- 2.39.5