Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
0943846a
Commit
0943846a
authored
Mar 29, 2010
by
Joern Engel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[LogFS] Move reserved segments with journal
Fixes a GC livelock. Signed-off-by:
Joern Engel
<
joern@logfs.org
>
parent
723b2ff4
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
4 additions
and
0 deletions
+4
-0
fs/logfs/journal.c
fs/logfs/journal.c
+4
-0
No files found.
fs/logfs/journal.c
View file @
0943846a
...
@@ -800,6 +800,7 @@ void do_logfs_journal_wl_pass(struct super_block *sb)
...
@@ -800,6 +800,7 @@ void do_logfs_journal_wl_pass(struct super_block *sb)
{
{
struct
logfs_super
*
super
=
logfs_super
(
sb
);
struct
logfs_super
*
super
=
logfs_super
(
sb
);
struct
logfs_area
*
area
=
super
->
s_journal_area
;
struct
logfs_area
*
area
=
super
->
s_journal_area
;
struct
btree_head32
*
head
=
&
super
->
s_reserved_segments
;
u32
segno
,
ec
;
u32
segno
,
ec
;
int
i
,
err
;
int
i
,
err
;
...
@@ -807,6 +808,7 @@ void do_logfs_journal_wl_pass(struct super_block *sb)
...
@@ -807,6 +808,7 @@ void do_logfs_journal_wl_pass(struct super_block *sb)
/* Drop old segments */
/* Drop old segments */
journal_for_each
(
i
)
journal_for_each
(
i
)
if
(
super
->
s_journal_seg
[
i
])
{
if
(
super
->
s_journal_seg
[
i
])
{
btree_remove32
(
head
,
super
->
s_journal_seg
[
i
]);
logfs_set_segment_unreserved
(
sb
,
logfs_set_segment_unreserved
(
sb
,
super
->
s_journal_seg
[
i
],
super
->
s_journal_seg
[
i
],
super
->
s_journal_ec
[
i
]);
super
->
s_journal_ec
[
i
]);
...
@@ -819,6 +821,8 @@ void do_logfs_journal_wl_pass(struct super_block *sb)
...
@@ -819,6 +821,8 @@ void do_logfs_journal_wl_pass(struct super_block *sb)
super
->
s_journal_seg
[
i
]
=
segno
;
super
->
s_journal_seg
[
i
]
=
segno
;
super
->
s_journal_ec
[
i
]
=
ec
;
super
->
s_journal_ec
[
i
]
=
ec
;
logfs_set_segment_reserved
(
sb
,
segno
);
logfs_set_segment_reserved
(
sb
,
segno
);
err
=
btree_insert32
(
head
,
segno
,
(
void
*
)
1
,
GFP_KERNEL
);
BUG_ON
(
err
);
/* mempool should prevent this */
}
}
/* Manually move journal_area */
/* Manually move journal_area */
freeseg
(
sb
,
area
->
a_segno
);
freeseg
(
sb
,
area
->
a_segno
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment