]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - include/linux/blkdev.h
Move c_src dirs back to toplevel
[bcachefs-tools-debian] / include / linux / blkdev.h
index 37a04a32125e0d1f9b6febf0866e4da06377386f..39143117c1a9bf1e22a8cec790eb1e88d426257d 100644 (file)
@@ -4,9 +4,14 @@
 #include <linux/backing-dev.h>
 #include <linux/blk_types.h>
 #include <linux/kobject.h>
+#include <linux/types.h>
+
+#define MAX_LFS_FILESIZE       ((loff_t)LLONG_MAX)
+
+#define BIO_MAX_VECS   256U
 
-typedef u64 sector_t;
 typedef unsigned fmode_t;
+typedef __u32 __bitwise blk_opf_t;
 
 struct bio;
 struct user_namespace;
@@ -18,29 +23,20 @@ struct user_namespace;
 #define MINOR(dev)     ((unsigned int) ((dev) & MINORMASK))
 #define MKDEV(ma,mi)   (((ma) << MINORBITS) | (mi))
 
-/* file is open for reading */
-#define FMODE_READ             ((__force fmode_t)0x1)
-/* file is open for writing */
-#define FMODE_WRITE            ((__force fmode_t)0x2)
-/* file is seekable */
-#define FMODE_LSEEK            ((__force fmode_t)0x4)
-/* file can be accessed using pread */
-#define FMODE_PREAD            ((__force fmode_t)0x8)
-/* file can be accessed using pwrite */
-#define FMODE_PWRITE           ((__force fmode_t)0x10)
-/* File is opened for execution with sys_execve / sys_uselib */
-#define FMODE_EXEC             ((__force fmode_t)0x20)
-/* File is opened with O_NDELAY (only set for block devices) */
-#define FMODE_NDELAY           ((__force fmode_t)0x40)
-/* File is opened with O_EXCL (only set for block devices) */
-#define FMODE_EXCL             ((__force fmode_t)0x80)
-/* File is opened using open(.., 3, ..) and is writeable only for ioctls
-   (specialy hack for floppy.c) */
-#define FMODE_WRITE_IOCTL      ((__force fmode_t)0x100)
-/* 32bit hashes as llseek() offset (for directories) */
-#define FMODE_32BITHASH         ((__force fmode_t)0x200)
-/* 64bit hashes as llseek() offset (for directories) */
-#define FMODE_64BITHASH         ((__force fmode_t)0x400)
+typedef unsigned int __bitwise blk_mode_t;
+
+/* open for reading */
+#define BLK_OPEN_READ          ((__force blk_mode_t)(1 << 0))
+/* open for writing */
+#define BLK_OPEN_WRITE         ((__force blk_mode_t)(1 << 1))
+/* open exclusively (vs other exclusive openers */
+#define BLK_OPEN_EXCL          ((__force blk_mode_t)(1 << 2))
+/* opened with O_NDELAY */
+#define BLK_OPEN_NDELAY                ((__force blk_mode_t)(1 << 3))
+/* open for "writes" only for ioctls (specialy hack for floppy.c) */
+#define BLK_OPEN_WRITE_IOCTL   ((__force blk_mode_t)(1 << 4))
+
+#define BLK_OPEN_BUFFERED      ((__force blk_mode_t)(1 << 5))
 
 struct inode {
        unsigned long           i_ino;
@@ -57,56 +53,47 @@ static inline struct inode *file_inode(const struct file *f)
        return f->f_inode;
 }
 
-#define BDEVNAME_SIZE  32
-
-struct request_queue {
-       struct backing_dev_info backing_dev_info;
-};
-
-struct gendisk {
-};
-
-struct hd_struct {
-       struct kobject          kobj;
-};
-
 #define part_to_dev(part)      (part)
 
-struct block_device {
-       char                    name[BDEVNAME_SIZE];
-       struct inode            *bd_inode;
-       struct request_queue    queue;
-       void                    *bd_holder;
-       struct hd_struct        *bd_part;
-       struct gendisk          *bd_disk;
-       struct gendisk          __bd_disk;
-       int                     bd_fd;
-};
-
 void generic_make_request(struct bio *);
 int submit_bio_wait(struct bio *);
-int blkdev_issue_discard(struct block_device *, sector_t,
-                        sector_t, gfp_t, unsigned long);
+
+static inline void submit_bio(struct bio *bio)
+{
+       generic_make_request(bio);
+}
+
+int blkdev_issue_discard(struct block_device *, sector_t, sector_t, gfp_t);
+int blkdev_issue_zeroout(struct block_device *, sector_t, sector_t, gfp_t, unsigned);
 
 #define bdev_get_queue(bdev)           (&((bdev)->queue))
 
-#define blk_queue_discard(q)           ((void) (q), 0)
-#define blk_queue_nonrot(q)            ((void) (q), 0)
+#ifndef SECTOR_SHIFT
+#define SECTOR_SHIFT 9
+#endif
+#ifndef SECTOR_SIZE
+#define SECTOR_SIZE (1 << SECTOR_SHIFT)
+#endif
 
-static inline struct backing_dev_info *blk_get_backing_dev_info(struct block_device *bdev)
-{
-       struct request_queue *q = bdev_get_queue(bdev);
+#define PAGE_SECTORS_SHIFT     (PAGE_SHIFT - SECTOR_SHIFT)
+#define PAGE_SECTORS           (1 << PAGE_SECTORS_SHIFT)
+#define SECTOR_MASK            (PAGE_SECTORS - 1)
 
-       return &q->backing_dev_info;
-}
+#define bdev_max_discard_sectors(bdev) ((void) (bdev), 0)
+#define blk_queue_nonrot(q)            ((void) (q), 0)
 
 unsigned bdev_logical_block_size(struct block_device *bdev);
 sector_t get_capacity(struct gendisk *disk);
 
-void blkdev_put(struct block_device *bdev, fmode_t mode);
+struct blk_holder_ops {
+        void (*mark_dead)(struct block_device *bdev);
+};
+
+void blkdev_put(struct block_device *bdev, void *holder);
 void bdput(struct block_device *bdev);
-struct block_device *blkdev_get_by_path(const char *path, fmode_t mode, void *holder);
-struct block_device *lookup_bdev(const char *path);
+struct block_device *blkdev_get_by_path(const char *path, blk_mode_t mode,
+                                       void *holder, const struct blk_holder_ops *hop);
+int lookup_bdev(const char *path, dev_t *);
 
 struct super_block {
        void                    *s_fs_info;
@@ -128,6 +115,7 @@ struct super_block {
 #define DT_LNK         10
 #define DT_SOCK                12
 #define DT_WHT         14
+#define DT_MAX         16
 #endif
 
 /*
@@ -194,5 +182,9 @@ static inline bool dir_emit_dots(struct file *file, struct dir_context *ctx)
 
 #define capable(cap)           true
 
+int blk_status_to_errno(blk_status_t status);
+blk_status_t errno_to_blk_status(int errno);
+const char *blk_status_to_str(blk_status_t status);
+
 #endif /* __TOOLS_LINUX_BLKDEV_H */