• Boaz Harrosh's avatar
    exofs: Write sbi->s_nextid as part of the Create command · 1cea312a
    Boaz Harrosh authored
    Before when creating a new inode, we'd set the sb->s_dirt flag,
    and sometime later the system would write out s_nextid as part
    of the sb_info. Also on inode sync we would force the sb sync
    as well.
    
    Define the s_nextid as a new partition attribute and set it
    every time we create a new object.
    At mount we read it from it's new place.
    
    We now never set sb->s_dirt anywhere in exofs. write_super
    is actually never called. The call to exofs_write_super from
    exofs_put_super is also removed because the VFS always calls
    ->sync_fs before calling ->put_super twice.
    
    To stay backward-and-forward compatible we also write the old
    s_nextid in the super_block object at unmount, and support zero
    length attribute on mount.
    
    This also fixes a BUG where in layouts when group_width was not
    a divisor of EXOFS_SUPER_ID (0x10000) the s_nextid was not read
    from the device it was written to. Because of the sliding window
    layout trick, and because the read was always done from the 0
    device but the write was done via the raid engine that might slide
    the device view. Now we read and write through the raid engine.
    Signed-off-by: default avatarBoaz Harrosh <bharrosh@panasas.com>
    1cea312a
inode.c 33.4 KB