summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2018-07-12 19:43:01 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2018-07-12 19:43:01 -0400
commitc9197c21103591917468ebc543ec01fa92ba4a15 (patch)
tree4e33eebb922fa0579268016bf575d8f3143e1b54
parentb8db2217ff7fea845e97a603227dbfcd18570a40 (diff)
bcachefs: work around an older dirent bug
-rw-r--r--fs/bcachefs/dirent.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/bcachefs/dirent.c b/fs/bcachefs/dirent.c
index 36dca6b22a91..d3dd3eb71837 100644
--- a/fs/bcachefs/dirent.c
+++ b/fs/bcachefs/dirent.c
@@ -97,7 +97,11 @@ const char *bch2_dirent_invalid(const struct bch_fs *c, struct bkey_s_c k)
if (!len)
return "empty name";
- if (bkey_val_u64s(k.k) > dirent_val_u64s(len))
+ /*
+ * older versions of bcachefs were buggy and creating dirent
+ * keys that were bigger than necessary:
+ */
+ if (bkey_val_u64s(k.k) > dirent_val_u64s(len + 7))
return "value too big";
if (len > BCH_NAME_MAX)