--- /dev/null
+
+#define CRYPTO_ALG_ASYNC 0x00000080
+struct hash_desc
+{
+ struct crypto_tfm *tfm;
+ u32 flags;
+};
+
+static inline int crypto_hash_init(struct hash_desc *desc)
+{
+ crypto_digest_init(desc->tfm);
+ return 0;
+}
+
+static inline int crypto_hash_digest(struct hash_desc *desc,
+ struct scatterlist *sg,
+ unsigned int nbytes, u8 *out)
+{
+ crypto_digest_digest(desc->tfm, sg, 1, out);
+ return nbytes;
+}
+
+static inline int crypto_hash_update(struct hash_desc *desc,
+ struct scatterlist *sg,
+ unsigned int nbytes)
+{
+ crypto_digest_update(desc->tfm, sg, 1);
+ return nbytes;
+}
+
+static inline int crypto_hash_final(struct hash_desc *desc, u8 *out)
+{
+ crypto_digest_final(desc->tfm, out);
+ return 0;
+}
+
+static inline struct crypto_tfm *crypto_alloc_hash(const char *alg_name,
+ u32 type, u32 mask)
+{
+ struct crypto_tfm *ret = crypto_alloc_tfm(alg_name ,type);
+ return ret ? ret : ERR_PTR(-ENOMEM);
+}
+
+static inline void crypto_free_hash(struct crypto_tfm *tfm)
+{
+ crypto_free_tfm(tfm);
+}
+
+int kernel_getsockname(struct socket *sock, struct sockaddr *addr,
+ int *addrlen)
+{
+ return sock->ops->getname(sock, addr, addrlen, 0);
+}
+
+int kernel_getpeername(struct socket *sock, struct sockaddr *addr,
+ int *addrlen)
+{
+ return sock->ops->getname(sock, addr, addrlen, 1);
+}
--- /dev/null
+#include <linux/version.h>
+
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,21)
+#define netlink_kernel_create(uint, groups, input, cb_mutex, mod) \
+ netlink_kernel_create(uint, groups, input, mod)
+#endif
#define ISCSI_SG_TABLESIZE SG_ALL
#define ISCSI_TCP_MAX_CMD_LEN 16
+#include "iscsi_2.6.20_compat.h"
+#include "iscsi_2.6.22_compat.h"
struct crypto_hash;
struct socket;
return rc;
}
-static void iscsi_xmitworker(struct work_struct *work)
+static void iscsi_xmitworker(void *data)
{
- struct iscsi_conn *conn =
- container_of(work, struct iscsi_conn, xmitwork);
+ struct iscsi_conn *conn = data;
int rc;
/*
* serialize Xmit worker on a per-connection basis.
INIT_LIST_HEAD(&conn->mgmtqueue);
INIT_LIST_HEAD(&conn->xmitqueue);
INIT_LIST_HEAD(&conn->requeue);
- INIT_WORK(&conn->xmitwork, iscsi_xmitworker);
+ INIT_WORK(&conn->xmitwork, iscsi_xmitworker, conn);
/* allocate login_mtask used for the login/text sequences */
spin_lock_bh(&session->lock);
#include <scsi/scsi_transport.h>
#include "scsi_transport_iscsi.h"
#include "iscsi_if.h"
+#include "iscsi_2.6.22_compat.h"
#define ISCSI_SESSION_ATTRS 16
#define ISCSI_CONN_ATTRS 11
return 0;
}
-static void session_recovery_timedout(struct work_struct *work)
+static void session_recovery_timedout(void *data)
{
- struct iscsi_cls_session *session =
- container_of(work, struct iscsi_cls_session,
- recovery_work.work);
+ struct iscsi_cls_session *session = data;
dev_printk(KERN_INFO, &session->dev, "iscsi: session recovery timed "
"out after %d secs\n", session->recovery_tmo);
session->transport = transport;
session->recovery_tmo = 120;
- INIT_DELAYED_WORK(&session->recovery_work, session_recovery_timedout);
+ INIT_WORK(&session->recovery_work, session_recovery_timedout, session);
INIT_LIST_HEAD(&session->host_list);
INIT_LIST_HEAD(&session->sess_list);
#include <linux/types.h>
#include <linux/mutex.h>
-#include <linux/timer.h>
-#include <linux/workqueue.h>
#include "iscsi_proto.h"
#include "iscsi_if.h"
/* recovery fields */
int recovery_tmo;
- struct delayed_work recovery_work;
+ struct work_struct recovery_work;
int target_id;