summaryrefslogtreecommitdiff
path: root/c_src
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2025-08-28 15:11:39 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2025-08-28 20:06:04 -0400
commitf296464b1c34ff989084182a9bc9901b959eeb91 (patch)
tree29bdf655e876a4fb4ab54c1e73e5e2194471344b /c_src
parenta59519d72a7b4821c25b97296787c9d58b028575 (diff)
__errmsg_ioctl()
less macro-ing Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'c_src')
-rw-r--r--c_src/libbcachefs.h25
1 files changed, 15 insertions, 10 deletions
diff --git a/c_src/libbcachefs.h b/c_src/libbcachefs.h
index b50a3b16..9371457f 100644
--- a/c_src/libbcachefs.h
+++ b/c_src/libbcachefs.h
@@ -130,16 +130,21 @@ struct bchfs_handle bchu_fs_open_by_dev(const char *, int *);
int bchu_dev_path_to_idx(struct bchfs_handle, const char *);
-#define errmsg_ioctl(_ioctl_fd, _ioctl_nr, _ioctl_arg) \
-({ \
- char err[8192]; \
- (_ioctl_arg)->err.msg_ptr = (ulong) err; \
- (_ioctl_arg)->err.msg_len = sizeof(err); \
- int ret = ioctl(_ioctl_fd, _ioctl_nr, _ioctl_arg); \
- if (ret < 0 && errno != ENOTTY) \
- die(#_ioctl_nr " error: %s\n%s", bch2_err_str(-errno), err);\
- ret >= 0; \
-})
+static inline bool __errmsg_ioctl(int fd, int nr, void *arg,
+ struct bch_ioctl_err_msg *errmsg,
+ const char *nr_str)
+{
+ char err[8192];
+ errmsg->msg_ptr = (ulong) err;
+ errmsg->msg_len = sizeof(err);
+ int ret = ioctl(fd, nr, arg);
+ if (ret < 0 && errno != ENOTTY)
+ die("%s error: %s\n%s", nr_str, bch2_err_str(-errno), err);
+ return ret >= 0;
+}
+
+#define errmsg_ioctl(_fd, _nr, _arg) \
+ __errmsg_ioctl(_fd, _nr, _arg, &(_arg)->err, #_nr)
static inline void bchu_disk_add(struct bchfs_handle fs, const char *dev)
{