X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=fs%2Fsuper.c;h=e20b5580afd5791818215c6bf1b3b0c6b7eb2559;hb=1f84253e3ce75fc1b2946a544e16c5c0c13c7017;hp=6e57ee252e14e1cd2982bb865fdebbbe24fb6ef7;hpb=88c3cdfdde3cf87e1831265ea4246430bef34fc9;p=powerpc.git diff --git a/fs/super.c b/fs/super.c index 6e57ee252e..e20b5580af 100644 --- a/fs/super.c +++ b/fs/super.c @@ -72,7 +72,7 @@ static struct super_block *alloc_super(void) INIT_HLIST_HEAD(&s->s_anon); INIT_LIST_HEAD(&s->s_inodes); init_rwsem(&s->s_umount); - sema_init(&s->s_lock, 1); + mutex_init(&s->s_lock); down_write(&s->s_umount); s->s_count = S_BIAS; atomic_set(&s->s_active, 1); @@ -171,6 +171,7 @@ void deactivate_super(struct super_block *s) if (atomic_dec_and_lock(&s->s_active, &sb_lock)) { s->s_count -= S_BIAS-1; spin_unlock(&sb_lock); + DQUOT_OFF(s); down_write(&s->s_umount); fs->kill_sb(s); put_filesystem(fs); @@ -246,8 +247,9 @@ void generic_shutdown_super(struct super_block *sb) /* Forget any remaining inodes */ if (invalidate_inodes(sb)) { - printk("VFS: Busy inodes after unmount. " - "Self-destruct in 5 seconds. Have a nice day...\n"); + printk("VFS: Busy inodes after unmount of %s. " + "Self-destruct in 5 seconds. Have a nice day...\n", + sb->s_id); } unlock_kernel(); @@ -474,8 +476,6 @@ rescan: return NULL; } -EXPORT_SYMBOL(user_get_super); - asmlinkage long sys_ustat(unsigned dev, struct ustat __user * ubuf) { struct super_block *s; @@ -513,7 +513,7 @@ static void mark_files_ro(struct super_block *sb) struct file *f; file_list_lock(); - list_for_each_entry(f, &sb->s_files, f_list) { + list_for_each_entry(f, &sb->s_files, f_u.fu_list) { if (S_ISREG(f->f_dentry->d_inode->i_mode) && file_count(f)) f->f_mode &= ~FMODE_WRITE; } @@ -670,9 +670,9 @@ static void bdev_uevent(struct block_device *bdev, enum kobject_action action) { if (bdev->bd_disk) { if (bdev->bd_part) - kobject_uevent(&bdev->bd_part->kobj, action, NULL); + kobject_uevent(&bdev->bd_part->kobj, action); else - kobject_uevent(&bdev->bd_disk->kobj, action, NULL); + kobject_uevent(&bdev->bd_disk->kobj, action); } } @@ -711,8 +711,7 @@ struct super_block *get_sb_bdev(struct file_system_type *fs_type, s->s_flags = flags; strlcpy(s->s_id, bdevname(bdev, b), sizeof(s->s_id)); - s->s_old_blocksize = block_size(bdev); - sb_set_blocksize(s, s->s_old_blocksize); + sb_set_blocksize(s, block_size(bdev)); error = fill_super(s, data, flags & MS_VERBOSE ? 1 : 0); if (error) { up_write(&s->s_umount);