diff options
Diffstat (limited to 'main/iscsitarget-grsec/iscsitarget-0.4.17+linux-2.6.28.patch')
-rw-r--r-- | main/iscsitarget-grsec/iscsitarget-0.4.17+linux-2.6.28.patch | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/main/iscsitarget-grsec/iscsitarget-0.4.17+linux-2.6.28.patch b/main/iscsitarget-grsec/iscsitarget-0.4.17+linux-2.6.28.patch new file mode 100644 index 0000000000..ec35cd526f --- /dev/null +++ b/main/iscsitarget-grsec/iscsitarget-0.4.17+linux-2.6.28.patch @@ -0,0 +1,78 @@ +From c5e70fc826aad5efb786c47d294e3c0c76246d63 Mon Sep 17 00:00:00 2001 +From: =?utf-8?q?Diego=20E.=20'Flameeyes'=20Petten=C3=B2?= <flameeyes@gmail.com> +Date: Sat, 3 Jan 2009 00:09:43 +0100 +Subject: [PATCH] Fix building with Linux kernel 2.6.28 and later. + +With changeset 30c40d2c01f68c7eb1a41ab3552bdaf5dbf300d4 of the Linux +kernel, the functions open_bdev_excl and close_bdev_excl were replaced with +functionally-equivalent open_bdev_exclusive and close_bdev_exclusive. + +The new interface uses fmode_t instead of integer flags to carry on the +opening mode for a block device, thus require some minor changes in the +calls. +--- + kernel/block-io.c | 21 +++++++++++++++++++++ + 1 files changed, 21 insertions(+), 0 deletions(-) + +diff --git a/kernel/block-io.c b/kernel/block-io.c +index e4a25f7..2c5f6f6 100644 +--- a/kernel/block-io.c ++++ b/kernel/block-io.c +@@ -18,6 +18,14 @@ + #include "iscsi_dbg.h" + #include "iotype.h" + ++#include <linux/version.h> ++ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28) ++# define HAVE_OPEN_BDEV_EXCLUSIVE 1 ++#else ++# define HAVE_OPEN_BDEV_EXCLUSIVE 0 ++#endif ++ + struct blockio_data { + char *path; + struct block_device *bdev; +@@ -154,14 +160,22 @@ blockio_open_path(struct iet_volume *volume, const char *path) + { + struct blockio_data *bio_data = volume->private; + struct block_device *bdev; ++#if HAVE_OPEN_BDEV_EXCLUSIVE ++ fmode_t mode = FMODE_READ | ( LUReadonly(volume) ? 0 : FMODE_WRITE ); ++#else + int flags = LUReadonly(volume) ? MS_RDONLY : 0; ++#endif + int err = 0; + + bio_data->path = kstrdup(path, GFP_KERNEL); + if (!bio_data->path) + return -ENOMEM; + ++#if HAVE_OPEN_BDEV_EXCLUSIVE ++ bdev = open_bdev_exclusive(path, mode, THIS_MODULE); ++#else + bdev = open_bdev_excl(path, flags, THIS_MODULE); ++#endif + if (IS_ERR(bdev)) { + err = PTR_ERR(bdev); + eprintk("Can't open device %s, error %d\n", path, err); +@@ -323,9 +337,16 @@ static void + blockio_detach(struct iet_volume *volume) + { + struct blockio_data *bio_data = volume->private; ++#if HAVE_OPEN_BDEV_EXCLUSIVE ++ fmode_t mode = FMODE_READ | ( LUReadonly(volume) ? 0 : FMODE_WRITE ); ++#endif + + if (bio_data->bdev) ++#if HAVE_OPEN_BDEV_EXCLUSIVE ++ close_bdev_exclusive(bio_data->bdev, mode); ++#else + close_bdev_excl(bio_data->bdev); ++#endif + kfree(bio_data->path); + + kfree(volume->private); +-- +1.6.0.6 + |