diff options
Diffstat (limited to 'fs/super.c')
-rw-r--r-- | fs/super.c | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/fs/super.c b/fs/super.c index 6ce501447ada..77cb4ec919b9 100644 --- a/fs/super.c +++ b/fs/super.c | |||
@@ -197,7 +197,7 @@ void deactivate_super(struct super_block *s) | |||
197 | if (atomic_dec_and_lock(&s->s_active, &sb_lock)) { | 197 | if (atomic_dec_and_lock(&s->s_active, &sb_lock)) { |
198 | s->s_count -= S_BIAS-1; | 198 | s->s_count -= S_BIAS-1; |
199 | spin_unlock(&sb_lock); | 199 | spin_unlock(&sb_lock); |
200 | DQUOT_OFF(s, 0); | 200 | vfs_dq_off(s, 0); |
201 | down_write(&s->s_umount); | 201 | down_write(&s->s_umount); |
202 | fs->kill_sb(s); | 202 | fs->kill_sb(s); |
203 | put_filesystem(fs); | 203 | put_filesystem(fs); |
@@ -266,7 +266,7 @@ EXPORT_SYMBOL(unlock_super); | |||
266 | void __fsync_super(struct super_block *sb) | 266 | void __fsync_super(struct super_block *sb) |
267 | { | 267 | { |
268 | sync_inodes_sb(sb, 0); | 268 | sync_inodes_sb(sb, 0); |
269 | DQUOT_SYNC(sb); | 269 | vfs_dq_sync(sb); |
270 | lock_super(sb); | 270 | lock_super(sb); |
271 | if (sb->s_dirt && sb->s_op->write_super) | 271 | if (sb->s_dirt && sb->s_op->write_super) |
272 | sb->s_op->write_super(sb); | 272 | sb->s_op->write_super(sb); |
@@ -287,6 +287,7 @@ int fsync_super(struct super_block *sb) | |||
287 | __fsync_super(sb); | 287 | __fsync_super(sb); |
288 | return sync_blockdev(sb->s_bdev); | 288 | return sync_blockdev(sb->s_bdev); |
289 | } | 289 | } |
290 | EXPORT_SYMBOL_GPL(fsync_super); | ||
290 | 291 | ||
291 | /** | 292 | /** |
292 | * generic_shutdown_super - common helper for ->kill_sb() | 293 | * generic_shutdown_super - common helper for ->kill_sb() |
@@ -655,7 +656,7 @@ int do_remount_sb(struct super_block *sb, int flags, void *data, int force) | |||
655 | mark_files_ro(sb); | 656 | mark_files_ro(sb); |
656 | else if (!fs_may_remount_ro(sb)) | 657 | else if (!fs_may_remount_ro(sb)) |
657 | return -EBUSY; | 658 | return -EBUSY; |
658 | retval = DQUOT_OFF(sb, 1); | 659 | retval = vfs_dq_off(sb, 1); |
659 | if (retval < 0 && retval != -ENOSYS) | 660 | if (retval < 0 && retval != -ENOSYS) |
660 | return -EBUSY; | 661 | return -EBUSY; |
661 | } | 662 | } |
@@ -670,11 +671,11 @@ int do_remount_sb(struct super_block *sb, int flags, void *data, int force) | |||
670 | } | 671 | } |
671 | sb->s_flags = (sb->s_flags & ~MS_RMT_MASK) | (flags & MS_RMT_MASK); | 672 | sb->s_flags = (sb->s_flags & ~MS_RMT_MASK) | (flags & MS_RMT_MASK); |
672 | if (remount_rw) | 673 | if (remount_rw) |
673 | DQUOT_ON_REMOUNT(sb); | 674 | vfs_dq_quota_on_remount(sb); |
674 | return 0; | 675 | return 0; |
675 | } | 676 | } |
676 | 677 | ||
677 | static void do_emergency_remount(unsigned long foo) | 678 | static void do_emergency_remount(struct work_struct *work) |
678 | { | 679 | { |
679 | struct super_block *sb; | 680 | struct super_block *sb; |
680 | 681 | ||
@@ -697,12 +698,19 @@ static void do_emergency_remount(unsigned long foo) | |||
697 | spin_lock(&sb_lock); | 698 | spin_lock(&sb_lock); |
698 | } | 699 | } |
699 | spin_unlock(&sb_lock); | 700 | spin_unlock(&sb_lock); |
701 | kfree(work); | ||
700 | printk("Emergency Remount complete\n"); | 702 | printk("Emergency Remount complete\n"); |
701 | } | 703 | } |
702 | 704 | ||
703 | void emergency_remount(void) | 705 | void emergency_remount(void) |
704 | { | 706 | { |
705 | pdflush_operation(do_emergency_remount, 0); | 707 | struct work_struct *work; |
708 | |||
709 | work = kmalloc(sizeof(*work), GFP_ATOMIC); | ||
710 | if (work) { | ||
711 | INIT_WORK(work, do_emergency_remount); | ||
712 | schedule_work(work); | ||
713 | } | ||
706 | } | 714 | } |
707 | 715 | ||
708 | /* | 716 | /* |
@@ -831,7 +839,8 @@ int get_sb_bdev(struct file_system_type *fs_type, | |||
831 | bdev->bd_super = s; | 839 | bdev->bd_super = s; |
832 | } | 840 | } |
833 | 841 | ||
834 | return simple_set_mnt(mnt, s); | 842 | simple_set_mnt(mnt, s); |
843 | return 0; | ||
835 | 844 | ||
836 | error_s: | 845 | error_s: |
837 | error = PTR_ERR(s); | 846 | error = PTR_ERR(s); |
@@ -877,7 +886,8 @@ int get_sb_nodev(struct file_system_type *fs_type, | |||
877 | return error; | 886 | return error; |
878 | } | 887 | } |
879 | s->s_flags |= MS_ACTIVE; | 888 | s->s_flags |= MS_ACTIVE; |
880 | return simple_set_mnt(mnt, s); | 889 | simple_set_mnt(mnt, s); |
890 | return 0; | ||
881 | } | 891 | } |
882 | 892 | ||
883 | EXPORT_SYMBOL(get_sb_nodev); | 893 | EXPORT_SYMBOL(get_sb_nodev); |
@@ -909,7 +919,8 @@ int get_sb_single(struct file_system_type *fs_type, | |||
909 | s->s_flags |= MS_ACTIVE; | 919 | s->s_flags |= MS_ACTIVE; |
910 | } | 920 | } |
911 | do_remount_sb(s, flags, data, 0); | 921 | do_remount_sb(s, flags, data, 0); |
912 | return simple_set_mnt(mnt, s); | 922 | simple_set_mnt(mnt, s); |
923 | return 0; | ||
913 | } | 924 | } |
914 | 925 | ||
915 | EXPORT_SYMBOL(get_sb_single); | 926 | EXPORT_SYMBOL(get_sb_single); |