bcachefs: Fixes for building in userspace
authorKent Overstreet <kent.overstreet@linux.dev>
Sat, 23 Sep 2023 23:07:16 +0000 (19:07 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:10:15 +0000 (17:10 -0400)
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/checksum.c
fs/bcachefs/checksum.h
fs/bcachefs/fs.h
fs/bcachefs/io_read.c
fs/bcachefs/super-io.c

index c70262b7fd6ef928ba71ae6ead84aa4e4c34f001..1948119edbf429e315c86d0c811294d491c4b1c0 100644 (file)
@@ -559,6 +559,26 @@ int bch2_request_key(struct bch_sb *sb, struct bch_key *key)
        return ret;
 }
 
+#ifndef __KERNEL__
+int bch2_revoke_key(struct bch_sb *sb)
+{
+       key_serial_t key_id;
+       struct printbuf key_description = PRINTBUF;
+
+       prt_printf(&key_description, "bcachefs:");
+       pr_uuid(&key_description, sb->user_uuid.b);
+
+       key_id = request_key("user", key_description.buf, NULL, KEY_SPEC_USER_KEYRING);
+       printbuf_exit(&key_description);
+       if (key_id < 0)
+               return errno;
+
+       keyctl_revoke(key_id);
+
+       return 0;
+}
+#endif
+
 int bch2_decrypt_sb_key(struct bch_fs *c,
                        struct bch_sb_field_crypt *crypt,
                        struct bch_key *key)
index 779f175029a88794951eb37f5ae6754464196831..13998388c545c476545b1e6cd418306f67dcf90e 100644 (file)
@@ -47,6 +47,9 @@ struct bch_csum bch2_checksum(struct bch_fs *, unsigned, struct nonce,
 
 int bch2_chacha_encrypt_key(struct bch_key *, struct nonce, void *, size_t);
 int bch2_request_key(struct bch_sb *, struct bch_key *);
+#ifndef __KERNEL__
+int bch2_revoke_key(struct bch_sb *);
+#endif
 
 int bch2_encrypt(struct bch_fs *, unsigned, struct nonce,
                 void *data, size_t);
index 10e11119ded222bf6c4d7a474db805fc6f465b3e..5edf1d4b9e6bdfa9a992bf895727228c79de4267 100644 (file)
@@ -197,7 +197,7 @@ int bch2_vfs_init(void);
 
 #else
 
-#define bch2_inode_update_after_write(_trans, _inode, _inode_u, _fields)       do {} while (0)
+#define bch2_inode_update_after_write(_trans, _inode, _inode_u, _fields)       ({ do {} while (0); })
 
 static inline void bch2_evict_subvolume_inodes(struct bch_fs *c,
                                               snapshot_id_list *s) {}
index 9a57da00573dbae68116f959bdd11812f4c1a648..443c3ea655271efc649bb425d752ef9d447f4dd4 100644 (file)
@@ -24,6 +24,8 @@
 #include "subvolume.h"
 #include "trace.h"
 
+#include <linux/sched/mm.h>
+
 #ifndef CONFIG_BCACHEFS_NO_LATENCY_ACCT
 
 static bool bch2_target_congested(struct bch_fs *c, u16 target)
index 55bc03d2e8ed56113011cc529aca6a6f1c8a16a3..c9bf342d14aa694e494f5a04e754a68c625ec58b 100644 (file)
@@ -675,7 +675,7 @@ retry:
 
 #ifndef __KERNEL__
        if (opt_get(*opts, direct_io) == false)
-               sb->mode |= FMODE_BUFFERED;
+               sb->mode |= BLK_OPEN_BUFFERED;
 #endif
 
        if (!opt_get(*opts, noexcl))