mirror of
https://github.com/koverstreet/bcachefs-tools.git
synced 2025-02-23 00:00:02 +03:00
Update bcachefs sources to 367a8fad45 bcachefs: Reset journal flush delay to default value if zeroed
This commit is contained in:
parent
74148a8ee5
commit
b2a9318aa8
@ -1 +1 @@
|
|||||||
0e705f5944069d3ded1d9238f7805dd210e79a25
|
367a8fad45924ce9fbe808964d1783c391a11bea
|
||||||
|
@ -966,8 +966,16 @@ static void bch2_journal_read_device(struct closure *cl)
|
|||||||
}
|
}
|
||||||
mutex_unlock(&jlist->lock);
|
mutex_unlock(&jlist->lock);
|
||||||
|
|
||||||
BUG_ON(ja->bucket_seq[ja->cur_idx] &&
|
if (ja->bucket_seq[ja->cur_idx] &&
|
||||||
ja->sectors_free == ca->mi.bucket_size);
|
ja->sectors_free == ca->mi.bucket_size) {
|
||||||
|
bch_err(c, "ja->sectors_free == ca->mi.bucket_size");
|
||||||
|
bch_err(c, "cur_idx %u/%u", ja->cur_idx, ja->nr);
|
||||||
|
for (i = 0; i < 3; i++) {
|
||||||
|
unsigned idx = ja->cur_idx - 1 + i;
|
||||||
|
bch_err(c, "bucket_seq[%u] = %llu", idx, ja->bucket_seq[idx]);
|
||||||
|
}
|
||||||
|
ja->sectors_free = 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set dirty_idx to indicate the entire journal is full and needs to be
|
* Set dirty_idx to indicate the entire journal is full and needs to be
|
||||||
|
@ -9,10 +9,10 @@
|
|||||||
#include "super-io.h"
|
#include "super-io.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
||||||
#define x(t, n) #t,
|
#define x(t, n) [n] = #t,
|
||||||
|
|
||||||
const char * const bch2_metadata_versions[] = {
|
const char * const bch2_metadata_versions[] = {
|
||||||
BCH_MEMBER_STATES()
|
BCH_METADATA_VERSIONS()
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -248,7 +248,8 @@ static int validate_sb_layout(struct bch_sb_layout *layout, struct printbuf *out
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int bch2_sb_validate(struct bch_sb_handle *disk_sb, struct printbuf *out)
|
static int bch2_sb_validate(struct bch_sb_handle *disk_sb, struct printbuf *out,
|
||||||
|
int rw)
|
||||||
{
|
{
|
||||||
struct bch_sb *sb = disk_sb->sb;
|
struct bch_sb *sb = disk_sb->sb;
|
||||||
struct bch_sb_field *f;
|
struct bch_sb_field *f;
|
||||||
@ -325,6 +326,18 @@ static int bch2_sb_validate(struct bch_sb_handle *disk_sb, struct printbuf *out)
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (rw == READ) {
|
||||||
|
/*
|
||||||
|
* Been seeing a bug where these are getting inexplicably
|
||||||
|
* zeroed, so we'r now validating them, but we have to be
|
||||||
|
* careful not to preven people's filesystems from mounting:
|
||||||
|
*/
|
||||||
|
if (!BCH_SB_JOURNAL_FLUSH_DELAY(sb))
|
||||||
|
SET_BCH_SB_JOURNAL_FLUSH_DELAY(sb, 1000);
|
||||||
|
if (!BCH_SB_JOURNAL_RECLAIM_DELAY(sb))
|
||||||
|
SET_BCH_SB_JOURNAL_RECLAIM_DELAY(sb, 1000);
|
||||||
|
}
|
||||||
|
|
||||||
for (opt_id = 0; opt_id < bch2_opts_nr; opt_id++) {
|
for (opt_id = 0; opt_id < bch2_opts_nr; opt_id++) {
|
||||||
const struct bch_option *opt = bch2_opt_table + opt_id;
|
const struct bch_option *opt = bch2_opt_table + opt_id;
|
||||||
|
|
||||||
@ -691,7 +704,7 @@ got_super:
|
|||||||
ret = 0;
|
ret = 0;
|
||||||
sb->have_layout = true;
|
sb->have_layout = true;
|
||||||
|
|
||||||
ret = bch2_sb_validate(sb, &err);
|
ret = bch2_sb_validate(sb, &err, READ);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
printk(KERN_ERR "bcachefs (%s): error validating superblock: %s",
|
printk(KERN_ERR "bcachefs (%s): error validating superblock: %s",
|
||||||
path, err.buf);
|
path, err.buf);
|
||||||
@ -807,7 +820,7 @@ int bch2_write_super(struct bch_fs *c)
|
|||||||
for_each_online_member(ca, c, i) {
|
for_each_online_member(ca, c, i) {
|
||||||
printbuf_reset(&err);
|
printbuf_reset(&err);
|
||||||
|
|
||||||
ret = bch2_sb_validate(&ca->disk_sb, &err);
|
ret = bch2_sb_validate(&ca->disk_sb, &err, WRITE);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
bch2_fs_inconsistent(c, "sb invalid before write: %s", err.buf);
|
bch2_fs_inconsistent(c, "sb invalid before write: %s", err.buf);
|
||||||
percpu_ref_put(&ca->io_ref);
|
percpu_ref_put(&ca->io_ref);
|
||||||
|
Loading…
Reference in New Issue
Block a user