/* ataraid.h Copyright (C) 2001 Red Hat, Inc. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. You should have received a copy of the GNU General Public License (for example /usr/src/linux/COPYING); if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Authors: Arjan van de Ven */ #include #include #include #include #include #include #include #include #include #include #define ATAMAJOR 114 #define SHIFT 4 #define MINOR_MASK 15 #define MAJOR_MASK 15 /* raid_device_operations is a light struct block_device_operations with an added method for make_request */ struct raid_device_operations { int (*open) (struct inode *, struct file *); int (*release) (struct inode *, struct file *); int (*ioctl) (struct inode *, struct file *, unsigned, unsigned long); int (*make_request) (request_queue_t *q, int rw, struct buffer_head * bh); }; struct geom { unsigned char heads; unsigned int cylinders; unsigned char sectors; }; /* structure for the splitting of bufferheads */ struct ataraid_bh_private { struct buffer_head *parent; atomic_t count; }; extern struct gendisk ataraid_gendisk; extern int ataraid_get_device(struct raid_device_operations *fops); extern void ataraid_release_device(int device); extern int get_blocksize(kdev_t dev); extern void ataraid_register_disk(int device,long size); extern struct buffer_head *ataraid_get_bhead(void); extern struct ataraid_bh_private *ataraid_get_private(void); extern void ataraid_end_request(struct buffer_head *bh, int uptodate);