We will need it for directory manipulations.
Signed-off-by: NeilBrown <neilb@suse.de>
uint32_t seq;
int devices;
int blocksize;
+ int blockbits;
int statesize;
int max_segment;
*/
char version[16];
uint8_t uuid[16];
- int blocksize;
+ int blockbits;
int statesize;
int devices;
};
*/
if (fs->blocksize == 0) {
- fs->blocksize = dev->blocksize;
+ fs->blocksize = 1<<dev->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<<dev->blockbits) ||
memcmp(fs->uuid, dev->uuid, 16) ||
fs->statesize != dev->statesize) {
*err = "device is inconsistent with other devices in LaFS";
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;
{
int fd;
int n;
+ int blockbits;
if (fs->blocksize != 0)
return -1;
blockbytes > 4096 ||
(blockbytes & (blockbytes-1)) != 0)
return -1;
+ blockbits = 9;
+ while ((1<<blockbits) != blockbytes)
+ blockbits++;
fd = open("/dev/urandom", O_RDONLY);
return -1;
fs->blocksize = blockbytes;
+ fs->blockbits = blockbits;
fs->seq = 1;
fs->statesize = 1024;
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");