IB/mlx4: Fix VF mac handling in RoCE
[cascardo/linux.git] / fs / nilfs2 / the_nilfs.c
index 8ba8229..9da25fe 100644 (file)
@@ -85,6 +85,7 @@ struct the_nilfs *alloc_nilfs(struct block_device *bdev)
        nilfs->ns_cptree = RB_ROOT;
        spin_lock_init(&nilfs->ns_cptree_lock);
        init_rwsem(&nilfs->ns_segctor_sem);
+       nilfs->ns_sb_update_freq = NILFS_SB_FREQ;
 
        return nilfs;
 }
@@ -97,6 +98,7 @@ void destroy_nilfs(struct the_nilfs *nilfs)
 {
        might_sleep();
        if (nilfs_init(nilfs)) {
+               nilfs_sysfs_delete_device_group(nilfs);
                brelse(nilfs->ns_sbh[0]);
                brelse(nilfs->ns_sbh[1]);
        }
@@ -640,6 +642,10 @@ int init_nilfs(struct the_nilfs *nilfs, struct super_block *sb, char *data)
        if (err)
                goto failed_sbh;
 
+       err = nilfs_sysfs_create_device_group(sb);
+       if (err)
+               goto failed_sbh;
+
        set_nilfs_init(nilfs);
        err = 0;
  out:
@@ -740,12 +746,13 @@ nilfs_find_or_create_root(struct the_nilfs *nilfs, __u64 cno)
 {
        struct rb_node **p, *parent;
        struct nilfs_root *root, *new;
+       int err;
 
        root = nilfs_lookup_root(nilfs, cno);
        if (root)
                return root;
 
-       new = kmalloc(sizeof(*root), GFP_KERNEL);
+       new = kzalloc(sizeof(*root), GFP_KERNEL);
        if (!new)
                return NULL;
 
@@ -782,6 +789,12 @@ nilfs_find_or_create_root(struct the_nilfs *nilfs, __u64 cno)
 
        spin_unlock(&nilfs->ns_cptree_lock);
 
+       err = nilfs_sysfs_create_snapshot_group(new);
+       if (err) {
+               kfree(new);
+               new = NULL;
+       }
+
        return new;
 }
 
@@ -790,6 +803,8 @@ void nilfs_put_root(struct nilfs_root *root)
        if (atomic_dec_and_test(&root->count)) {
                struct the_nilfs *nilfs = root->nilfs;
 
+               nilfs_sysfs_delete_snapshot_group(root);
+
                spin_lock(&nilfs->ns_cptree_lock);
                rb_erase(&root->rb_node, &nilfs->ns_cptree);
                spin_unlock(&nilfs->ns_cptree_lock);