Martin Steigerwald wrote:
Hello Eric,
for my article I looked at the source code of those. It seems that journal
block device tests wether barriers work
commit.c: if (ret == -EOPNOTSUPP && barrier_done) {
commit.c: "JBD: barrier-based sync failed on %s - "
commit.c: "disabling barriers\n",
Also reiserfs 3 seems to deactivate barriers if not avaible (journal.c)
if (reiserfs_barrier_flush(p_s_sb)) {
int ret;
lock_buffer(journal->j_header_bh);
ret = submit_barrier_buffer(journal->j_header_bh);
if (ret == -EOPNOTSUPP) {
set_buffer_uptodate(journal->j_header_bh);
disable_barrier(p_s_sb);
goto sync;
}
wait_on_buffer(journal->j_header_bh);
check_barrier_completion(p_s_sb,
journal->j_header_bh);
} else {
(both sources from kernel 2.6.17.7)
Yep, you're right, not quite sure how I missed that...
Thanks,
-Eric
|