]> git.neil.brown.name Git - lafs-utils.git/commitdiff
Get lafs_add_device to add free segments to the list.
authorNeilBrown <neilb@suse.de>
Mon, 14 Mar 2011 01:22:17 +0000 (12:22 +1100)
committerNeilBrown <neilb@suse.de>
Mon, 14 Mar 2011 01:22:17 +0000 (12:22 +1100)
This allows a full mkfs to complete.

Also fix a bug in lafs_add_inode.  A subsequent call to
lafs_get_inode would re-initialise the block.

Signed-off-by: NeilBrown <neilb@suse.de>
lib/lafs_add_device.c
lib/lafs_add_inode.c

index 819c65830450d25b005cd566eceba88897950a15..63abcebd5c691ce9ee67b9b83bcf482b4f38fe47 100644 (file)
@@ -55,6 +55,7 @@ struct lafs_device *lafs_add_device(struct lafs *fs, char *devname, int fd,
        struct lafs_device *d2;
        unsigned long long size;
        int devblk;
+       loff_t seg;
 
        memset(dev, 0, sizeof(*dev));
        dev->fd = fd;
@@ -145,5 +146,9 @@ struct lafs_device *lafs_add_device(struct lafs *fs, char *devname, int fd,
                }
        }
 
+       for (seg = 0; seg < dev->segment_count; seg++)
+               if (lafs_add_free_seg(fs, dev->devnum, seg) == 0)
+                       break;
+
        return dev;
 }
index 205761339640e315433706b581a2f70ffb825a70..9ddd6fec5b7225646eeec6995ad6801dcf59210d 100644 (file)
@@ -17,6 +17,7 @@ struct lafs_ino *lafs_add_inode(struct lafs_ino *fsys, int inum, int type)
                return NULL;
 
        lafs_inode_init(fsys->fs, db->b.data, type);
+       db->b.flags |= B_Valid;
 
        ino = lafs_import_inode(db);
        lafs_dirty_blk(&db->b);