diff options
| author | Patrick McHardy <kaber@trash.net> | 2010-04-20 10:02:01 -0400 | 
|---|---|---|
| committer | Patrick McHardy <kaber@trash.net> | 2010-04-20 10:02:01 -0400 | 
| commit | 62910554656cdcd6b6f84a5154c4155aae4ca231 (patch) | |
| tree | dcf14004f6fd2ef7154362ff948bfeba0f3ea92d /fs/logfs/journal.c | |
| parent | 22265a5c3c103cf8c50be62e6c90d045eb649e6d (diff) | |
| parent | ab9304717f7624c41927f442e6b6d418b2d8b3e4 (diff) | |
Merge branch 'master' of /repos/git/net-next-2.6
Conflicts:
	Documentation/feature-removal-schedule.txt
	net/ipv6/netfilter/ip6t_REJECT.c
	net/netfilter/xt_limit.c
Signed-off-by: Patrick McHardy <kaber@trash.net>
Diffstat (limited to 'fs/logfs/journal.c')
| -rw-r--r-- | fs/logfs/journal.c | 8 | 
1 files changed, 8 insertions, 0 deletions
| diff --git a/fs/logfs/journal.c b/fs/logfs/journal.c index 6ad30a4c9052..33bd260b8309 100644 --- a/fs/logfs/journal.c +++ b/fs/logfs/journal.c | |||
| @@ -6,6 +6,7 @@ | |||
| 6 | * Copyright (c) 2005-2008 Joern Engel <joern@logfs.org> | 6 | * Copyright (c) 2005-2008 Joern Engel <joern@logfs.org> | 
| 7 | */ | 7 | */ | 
| 8 | #include "logfs.h" | 8 | #include "logfs.h" | 
| 9 | #include <linux/slab.h> | ||
| 9 | 10 | ||
| 10 | static void logfs_calc_free(struct super_block *sb) | 11 | static void logfs_calc_free(struct super_block *sb) | 
| 11 | { | 12 | { | 
| @@ -800,6 +801,7 @@ void do_logfs_journal_wl_pass(struct super_block *sb) | |||
| 800 | { | 801 | { | 
| 801 | struct logfs_super *super = logfs_super(sb); | 802 | struct logfs_super *super = logfs_super(sb); | 
| 802 | struct logfs_area *area = super->s_journal_area; | 803 | struct logfs_area *area = super->s_journal_area; | 
| 804 | struct btree_head32 *head = &super->s_reserved_segments; | ||
| 803 | u32 segno, ec; | 805 | u32 segno, ec; | 
| 804 | int i, err; | 806 | int i, err; | 
| 805 | 807 | ||
| @@ -807,6 +809,7 @@ void do_logfs_journal_wl_pass(struct super_block *sb) | |||
| 807 | /* Drop old segments */ | 809 | /* Drop old segments */ | 
| 808 | journal_for_each(i) | 810 | journal_for_each(i) | 
| 809 | if (super->s_journal_seg[i]) { | 811 | if (super->s_journal_seg[i]) { | 
| 812 | btree_remove32(head, super->s_journal_seg[i]); | ||
| 810 | logfs_set_segment_unreserved(sb, | 813 | logfs_set_segment_unreserved(sb, | 
| 811 | super->s_journal_seg[i], | 814 | super->s_journal_seg[i], | 
| 812 | super->s_journal_ec[i]); | 815 | super->s_journal_ec[i]); | 
| @@ -819,8 +822,13 @@ void do_logfs_journal_wl_pass(struct super_block *sb) | |||
| 819 | super->s_journal_seg[i] = segno; | 822 | super->s_journal_seg[i] = segno; | 
| 820 | super->s_journal_ec[i] = ec; | 823 | super->s_journal_ec[i] = ec; | 
| 821 | logfs_set_segment_reserved(sb, segno); | 824 | logfs_set_segment_reserved(sb, segno); | 
| 825 | err = btree_insert32(head, segno, (void *)1, GFP_KERNEL); | ||
| 826 | BUG_ON(err); /* mempool should prevent this */ | ||
| 827 | err = logfs_erase_segment(sb, segno, 1); | ||
| 828 | BUG_ON(err); /* FIXME: remount-ro would be nicer */ | ||
| 822 | } | 829 | } | 
| 823 | /* Manually move journal_area */ | 830 | /* Manually move journal_area */ | 
| 831 | freeseg(sb, area->a_segno); | ||
| 824 | area->a_segno = super->s_journal_seg[0]; | 832 | area->a_segno = super->s_journal_seg[0]; | 
| 825 | area->a_is_open = 0; | 833 | area->a_is_open = 0; | 
| 826 | area->a_used_bytes = 0; | 834 | area->a_used_bytes = 0; | 
