err = -ENOMEM;
if (!b)
goto abort;
+ lafs_iolock_written(&b->b);
+ set_bit(B_PinPending, &b->b.flags);
+ lafs_iounlock_block(&b->b);
retry2:
lafs_checkpoint_lock(fs);
err = lafs_pin_dblock(b, NewSpace);
bit = LAFSI(im)->md.inodemap.nextbit;
LAFSI(im)->md.inodemap.thisblock = bnum;
buf = map_dblock(b);
+ while (bnum == 0 && bit < 16) {
+ /* Never return an inum below 16 - they are special */
+ if (!test_bit(bit, (unsigned long *)buf))
+ set_bit(bit, (unsigned long *)buf);
+ bit++;
+ }
+
bit = find_next_bit((unsigned long *)buf,
fs->blocksize<<3, bit);
unmap_dblock(b, buf);