]> Git Repo - linux.git/blobdiff - include/linux/bsg.h
bsg: split handling of SCSI CDBs vs transport requeues
[linux.git] / include / linux / bsg.h
index 2a202e41a3af53f3da1beadd94fbe41bd5a6f157..0c7dd9ceb139e53a241d23bb60d1d9591ab480ae 100644 (file)
@@ -1,34 +1,43 @@
 /* SPDX-License-Identifier: GPL-2.0 */
-#ifndef BSG_H
-#define BSG_H
+#ifndef _LINUX_BSG_H
+#define _LINUX_BSG_H
 
 #include <uapi/linux/bsg.h>
 
+struct request;
+
+#ifdef CONFIG_BLK_DEV_BSG
+struct bsg_ops {
+       int     (*check_proto)(struct sg_io_v4 *hdr);
+       int     (*fill_hdr)(struct request *rq, struct sg_io_v4 *hdr,
+                               fmode_t mode);
+       int     (*complete_rq)(struct request *rq, struct sg_io_v4 *hdr);
+       void    (*free_rq)(struct request *rq);
+};
 
-#if defined(CONFIG_BLK_DEV_BSG)
 struct bsg_class_device {
        struct device *class_dev;
        struct device *parent;
        int minor;
        struct request_queue *queue;
        struct kref ref;
+       const struct bsg_ops *ops;
        void (*release)(struct device *);
 };
 
-extern int bsg_register_queue(struct request_queue *q,
-                             struct device *parent, const char *name,
-                             void (*release)(struct device *));
-extern void bsg_unregister_queue(struct request_queue *);
+int bsg_register_queue(struct request_queue *q, struct device *parent,
+               const char *name, const struct bsg_ops *ops,
+               void (*release)(struct device *));
+int bsg_scsi_register_queue(struct request_queue *q, struct device *parent);
+void bsg_unregister_queue(struct request_queue *q);
 #else
-static inline int bsg_register_queue(struct request_queue *q,
-                                    struct device *parent, const char *name,
-                                    void (*release)(struct device *))
+static inline int bsg_scsi_register_queue(struct request_queue *q,
+               struct device *parent)
 {
        return 0;
 }
 static inline void bsg_unregister_queue(struct request_queue *q)
 {
 }
-#endif
-
-#endif
+#endif /* CONFIG_BLK_DEV_BSG */
+#endif /* _LINUX_BSG_H */
This page took 0.044166 seconds and 4 git commands to generate.