summaryrefslogtreecommitdiff
path: root/c_src
diff options
context:
space:
mode:
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)
{