[Devel] [PATCH v2 05/14] fs/fuse kio: make interface pcs_kio_req_list() for listing kio reqs
Pavel Butsykin
pbutsykin at virtuozzo.com
Fri May 24 18:54:54 MSK 2019
This is preparation patch that implements common interface pcs_kio_req_list(),
which will be needed to collect kio requests statistics.
Signed-off-by: Pavel Butsykin <pbutsykin at virtuozzo.com>
---
fs/fuse/kio/pcs/pcs_fuse_kdirect.c | 27 +++++++++++++++++++++++++++
fs/fuse/kio/pcs/pcs_req.h | 3 +++
2 files changed, 30 insertions(+)
diff --git a/fs/fuse/kio/pcs/pcs_fuse_kdirect.c b/fs/fuse/kio/pcs/pcs_fuse_kdirect.c
index 2060ef3b1fc4..796d8db05aba 100644
--- a/fs/fuse/kio/pcs/pcs_fuse_kdirect.c
+++ b/fs/fuse/kio/pcs/pcs_fuse_kdirect.c
@@ -1533,6 +1533,33 @@ void pcs_kio_file_list(struct fuse_conn *fc, kio_file_itr kfile_cb, void *ctx)
}
}
+struct kreq_list_ctx {
+ kio_req_itr cb;
+ void *ctx;
+};
+
+static void kpcs_req_list_itr(struct fuse_file *ff, struct pcs_dentry_info *di,
+ void *ctx)
+{
+ struct fuse_req *req;
+ struct kreq_list_ctx *kreq_ctx = ctx;
+
+ spin_lock(&di->kq_lock);
+ list_for_each_entry(req, &di->kq, list) {
+ kreq_ctx->cb(ff, req, kreq_ctx->ctx);
+ }
+ spin_unlock(&di->kq_lock);
+}
+
+void pcs_kio_req_list(struct fuse_conn *fc, kio_req_itr kreq_cb, void *ctx)
+{
+ struct kreq_list_ctx kreq_ctx = {
+ .cb = kreq_cb,
+ .ctx = ctx,
+ };
+ pcs_kio_file_list(fc, kpcs_req_list_itr, &kreq_ctx);
+}
+
static void kpcs_kill_lreq_itr(struct fuse_file *ff, struct pcs_dentry_info *di,
void *ctx)
{
diff --git a/fs/fuse/kio/pcs/pcs_req.h b/fs/fuse/kio/pcs/pcs_req.h
index a1c7e372f297..ce73fe45bd86 100644
--- a/fs/fuse/kio/pcs/pcs_req.h
+++ b/fs/fuse/kio/pcs/pcs_req.h
@@ -332,5 +332,8 @@ void pcs_ireq_queue_fail(struct list_head *queue, int error);
typedef void (*kio_file_itr)(struct fuse_file *ff, struct pcs_dentry_info *di,
void *ctx);
void pcs_kio_file_list(struct fuse_conn *fc, kio_file_itr kfile_cb, void *ctx);
+typedef void (*kio_req_itr)(struct fuse_file *ff, struct fuse_req *req,
+ void *ctx);
+void pcs_kio_req_list(struct fuse_conn *fc, kio_req_itr kreq_cb, void *ctx);
#endif /* _PCS_REQ_H_ */
--
2.15.1
More information about the Devel
mailing list