])
])
-# from 2.6.24 please use sg_init_table
-AC_DEFUN([LIBCFS_SCATTERLIST_INITTABLE],
-[AC_MSG_CHECKING([if sg_init_table is defined])
-LB_LINUX_TRY_COMPILE([
- #include <linux/scatterlist.h>
-],[
- sg_init_table(NULL,0);
-],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_SCATTERLIST_INITTABLE, 1,
- [sg_init_table is defined])
-],[
- AC_MSG_RESULT(NO)
-])
-])
-
# 2.6.24
AC_DEFUN([LIBCFS_NETWORK_NAMESPACE],
[AC_MSG_CHECKING([for network stack has namespaces])
# 2.6.24
LIBCFS_SYSCTL_UNNUMBERED
LIBCFS_SCATTERLIST_SETPAGE
-LIBCFS_SCATTERLIST_INITTABLE
LIBCFS_NL_BROADCAST_GFP
LIBCFS_NETWORK_NAMESPACE
LIBCFS_NETLINK_NETNS
int (*handler)(void *data, int write,
loff_t pos, void *buffer, int len));
-#ifndef HAVE_SCATTERLIST_INITTABLE
-#define sg_init_table(sgl, n) memset(sgl, 0, sizeof(*sgl) * n)
-#endif
-
#endif /* _PORTALS_COMPAT_H */
return kiblnd_map_tx(ni, tx, rd, sg - tx->tx_frags);
}
-static inline int
-get_kiov_length (int nkiov, lnet_kiov_t *kiov, int offset, int nob)
-{
- int fragnob;
- int count = 0;
-
- do {
- LASSERT (nkiov > 0);
-
- fragnob = min((int)(kiov->kiov_len - offset), nob);
-
- count++;
-
- offset = 0;
- kiov++;
- nkiov--;
- nob -= fragnob;
- } while (nob > 0);
-
- return count;
-}
-
int
kiblnd_setup_rd_kiov (lnet_ni_t *ni, kib_tx_t *tx, kib_rdma_desc_t *rd,
int nkiov, lnet_kiov_t *kiov, int offset, int nob)
}
sg = tx->tx_frags;
- tx->tx_nfrags = get_kiov_length(nkiov, kiov, offset, nob);
- sg_init_table(sg, tx->tx_nfrags);
do {
LASSERT (nkiov > 0);
fragnob = min((int)(kiov->kiov_len - offset), nob);
+ memset(sg, 0, sizeof(*sg));
sg_set_page(sg, kiov->kiov_page, fragnob,
kiov->kiov_offset + offset);
sg++;