#include <linux/stat.h>
#include <linux/vmalloc.h>
#include <linux/slab.h>
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27))
#include <linux/semaphore.h>
-#else
-#include <asm/semaphore.h>
-#endif
#include <asm/uaccess.h>
#include <linux/proc_fs.h>
#include <linux/blkdev.h>
static long int cowlo_readcowraw (struct cowloop_device *, void *, int, loff_t);
static long int cowlo_writecow (struct cowloop_device *, void *, int, loff_t);
static long int cowlo_writecowraw(struct cowloop_device *, void *, int, loff_t);
-
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28))
static int cowlo_ioctl (struct block_device *, fmode_t,
unsigned int, unsigned long);
-#else
-static int cowlo_ioctl (struct inode *, struct file *,
- unsigned int, unsigned long);
-#endif
-
static int cowlo_makepair (struct cowpair __user *);
static int cowlo_removepair (unsigned long __user *);
static int cowlo_watch (struct cowpair __user *);
** 0 - okay
** < 0 - error value
*/
-static int
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28))
-cowlo_open(struct block_device *bdev, fmode_t mode)
-#else
-cowlo_open(struct inode *inode, struct file *file)
-#endif
+static int cowlo_open(struct block_device *bdev, fmode_t mode)
{
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28))
struct inode *inode = bdev->bd_inode;
-#endif
+
if (!inode)
return -EINVAL;
** returns:
** 0 - okay
*/
-static int
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28))
-cowlo_release(struct gendisk *gd, fmode_t mode)
-#else
-cowlo_release(struct inode *inode, struct file *file)
-#endif
+static int cowlo_release(struct gendisk *gd, fmode_t mode)
{
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28))
struct block_device *bdev;
struct inode *inode;
bdev = bdget_disk(gd, 0);
inode = bdev->bd_inode;
-#endif
if (!inode)
return 0;
** 0 - okay
** < 0 - error value
*/
-static int
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28))
-cowlo_ioctl(struct block_device *bdev, fmode_t mode,
- unsigned int cmd, unsigned long arg)
-#else
-cowlo_ioctl(struct inode *inode, struct file *filp,
- unsigned int cmd, unsigned long arg)
-#endif
+static int cowlo_ioctl(struct block_device *bdev, fmode_t mode,
+ unsigned int cmd, unsigned long arg)
{
struct hd_geometry geo;
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28))
struct inode *inode = bdev->bd_inode;
-#endif
DEBUGP(DCOW "cowloop - ioctl cmd %x\n", cmd);
** function to be called by core-kernel to handle the I/O-requests
** in the queue
*/
-static void
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25))
-cowlo_request(struct request_queue *q)
-#else
-cowlo_request(request_queue_t *q)
-#endif
+static void cowlo_request(struct request_queue *q)
{
struct request *req;
struct cowloop_device *cowdev;
(cowdev->cowwrites % SPCDFLINTVL == 0) ) {
struct kstatfs ks;
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18))
if (vfs_statfs(cowdev->cowfp->f_dentry, &ks)==0){
-#else
- if (vfs_statfs(cowdev->cowfp->f_dentry->d_inode->i_sb, &ks)==0){
-#endif
if (ks.f_bavail <= SPCMINBLK) {
switch (ks.f_bavail) {
case 0:
/*
** administer total and available size of filesystem holding cowfile
*/
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18))
- if (vfs_statfs(cowdev->cowfp->f_dentry, &ks)==0){
-#else
- if (vfs_statfs(cowdev->cowfp->f_dentry->d_inode->i_sb, &ks)==0){
-#endif
+ if (vfs_statfs(cowdev->cowfp->f_dentry, &ks)==0) {
cowdev->blksize = ks.f_bsize;
cowdev->blktotal = ks.f_blocks;
cowdev->blkavail = ks.f_bavail;
cowdev->belowq = cowdev->belowgd->queue;
if (cowdev->numblocks == 0) {
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27))
cowdev->numblocks = get_capacity(cowdev->belowgd)
/ (MAPUNIT/512);
-#else
- cowdev->numblocks = cowdev->belowgd->capacity
- / (MAPUNIT/512);
-#endif
}
}
for (minor=0; minor < maxcows; minor++)
(void) cowlo_closepair(cowdevall[minor]);
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,23))
unregister_blkdev(COWMAJOR, DEVICE_NAME);
-#else
- if (unregister_blkdev(COWMAJOR, DEVICE_NAME) != 0)
- printk(KERN_WARNING "cowloop - cannot unregister blkdev\n");
-#endif
/*
** get rid of /proc/cow and unregister the driver