Re: struct page vs page_link

2008-02-12 Thread Nicholas A. Bellinger
Hi Mark,

After Bark posted an BUG() when CONFIG_DEBUG_SG was used with
LIO-Target, I add the proper usage of sg_table_init() and sg_mark_end()
in the LIO-Target SE.  Please update your case (if you are not doing it
already).  Here are my new changes for those who are still updating
drivers to use the new include/linux/scatterlist.h API.

--nab 

Index: include/iscsi_linux_defs.h
===
--- include/iscsi_linux_defs.h  (revision 214)
+++ include/iscsi_linux_defs.h  (revision 215)
@@ -49,11 +49,14 @@
  * code, and use inline functions for legacy operation. 
  */
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
+# define SET_SG_TABLE(sg, cnt) sg_init_table((struct scatterlist 
*)[0], cnt);   \
+   sg_mark_end((struct scatterlist 
*)[cnt - 1]);
 # define GET_ADDR_SG(sg)   sg_virt(sg)
 # define GET_PAGE_SG(sg)   sg_page(sg)
 # define SET_PAGE_SG(sg, page) sg_assign_page(sg, page)
 #else
 #include 
+#define SET_SG_TABLE(sg, cnt)  
 static inline void *GET_ADDR_SG(struct scatterlist *sg)
 {
return(page_address(sg->page) + sg->offset);

As you can see, the pre 2.6.24 case expands to a nop.

In my case with LIO-Target and generating SC arrays going to the default
path (which is common for PSCSI, IBLOCK, FILE, and RAMDISK_MCP) where
se_mem_t list head struct page is mapped to struct page-link in the
contigious struct scatterlist arrays.

In the iscsi_target_transport.c:transport_calc_sg_num() and scatterlist
allocation for RAMDISK_DR and RAMDISK_MCP, I added the usage of
SET_SG_TABLE right after the array of struct scatterlist right after the
struct scatterlist array has been allocated and memset.

Index: target/iscsi_target_rd.c
===
--- target/iscsi_target_rd.c(revision 215)
+++ target/iscsi_target_rd.c(revision 217)
@@ -209,6 +209,8 @@
}
memset(sg, 0, sg_per_table * sizeof(struct scatterlist));
 
+   SET_SG_TABLE(sg, sg_per_table);
+
sg_table[i].sg_table = sg;
sg_table[i].rd_sg_count = sg_per_table;
sg_table[i].page_start_offset = page_offset;
Index: target/iscsi_target_transport.c
===
--- target/iscsi_target_transport.c (revision 215)
+++ target/iscsi_target_transport.c (revision 217)
@@ -5096,6 +5096,8 @@
}
memset(task->task_buf, 0, task->task_sg_num * sizeof(struct 
scatterlist));
 
+   SET_SG_TABLE(task->task_buf, task->task_sg_num);
+
DEBUG_SC("Successfully allocated task->task_sg_num: %u\n", 
task->task_sg_num);

return(task->task_sg_num);

On Sun, 2008-02-10 at 14:26 -0500, Mark Tuttle wrote:
> Thanks for that information, I analysed your code to get a better
> understanding of exactly what was going on and was able to
> successfully patch what I needed to.
> 
> http://www.tuttleresearch.com/80211patch.html
> 
> Much appreciated,
> Mark Tuttle
> 
> On 2/9/08, Nicholas A. Bellinger <[EMAIL PROTECTED]> wrote:
> > On Sat, 2008-02-09 at 01:28 -0500, Mark Tuttle wrote:
> > > Regarding:
> > > commit 18dabf473e15850c0dbc8ff13ac1e2806d542c15
> > >
> > > This actually breaks the 802.11 subsystem (http://80211.sf.net) which
> > > relies on the page struct. (ieee80211_crypt_wep.c, line 190) Can
> > > anyone suggest an alternative kernel function or method? As of 2.6.24,
> > > the 802.11 subsystem cannot compile.
> > >
> >
> > Greetings Mark,
> >
> > I have been updating the LIO-Target codebase to 2.6.24 recently, and
> > posted some information about what I ended up doing for struct
> > scatterlist->page changing to scatterlist->page_link and
> > include/linux/scatterlist.h
> >
> > http://lkml.org/lkml/2008/2/4/111
> >
> > Hope this helps,
> >
> > --nab
> >
> >
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [EMAIL PROTECTED]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: struct page vs page_link

2008-02-12 Thread Nicholas A. Bellinger
Hi Mark,

After Bark posted an BUG() when CONFIG_DEBUG_SG was used with
LIO-Target, I add the proper usage of sg_table_init() and sg_mark_end()
in the LIO-Target SE.  Please update your case (if you are not doing it
already).  Here are my new changes for those who are still updating
drivers to use the new include/linux/scatterlist.h API.

--nab 

Index: include/iscsi_linux_defs.h
===
--- include/iscsi_linux_defs.h  (revision 214)
+++ include/iscsi_linux_defs.h  (revision 215)
@@ -49,11 +49,14 @@
  * code, and use inline functions for legacy operation. 
  */
 #if LINUX_VERSION_CODE = KERNEL_VERSION(2,6,24)
+# define SET_SG_TABLE(sg, cnt) sg_init_table((struct scatterlist 
*)sg[0], cnt);   \
+   sg_mark_end((struct scatterlist 
*)sg[cnt - 1]);
 # define GET_ADDR_SG(sg)   sg_virt(sg)
 # define GET_PAGE_SG(sg)   sg_page(sg)
 # define SET_PAGE_SG(sg, page) sg_assign_page(sg, page)
 #else
 #include linux/scatterlist.h
+#define SET_SG_TABLE(sg, cnt)  
 static inline void *GET_ADDR_SG(struct scatterlist *sg)
 {
return(page_address(sg-page) + sg-offset);

As you can see, the pre 2.6.24 case expands to a nop.

In my case with LIO-Target and generating SC arrays going to the default
path (which is common for PSCSI, IBLOCK, FILE, and RAMDISK_MCP) where
se_mem_t list head struct page is mapped to struct page-link in the
contigious struct scatterlist arrays.

In the iscsi_target_transport.c:transport_calc_sg_num() and scatterlist
allocation for RAMDISK_DR and RAMDISK_MCP, I added the usage of
SET_SG_TABLE right after the array of struct scatterlist right after the
struct scatterlist array has been allocated and memset.

Index: target/iscsi_target_rd.c
===
--- target/iscsi_target_rd.c(revision 215)
+++ target/iscsi_target_rd.c(revision 217)
@@ -209,6 +209,8 @@
}
memset(sg, 0, sg_per_table * sizeof(struct scatterlist));
 
+   SET_SG_TABLE(sg, sg_per_table);
+
sg_table[i].sg_table = sg;
sg_table[i].rd_sg_count = sg_per_table;
sg_table[i].page_start_offset = page_offset;
Index: target/iscsi_target_transport.c
===
--- target/iscsi_target_transport.c (revision 215)
+++ target/iscsi_target_transport.c (revision 217)
@@ -5096,6 +5096,8 @@
}
memset(task-task_buf, 0, task-task_sg_num * sizeof(struct 
scatterlist));
 
+   SET_SG_TABLE(task-task_buf, task-task_sg_num);
+
DEBUG_SC(Successfully allocated task-task_sg_num: %u\n, 
task-task_sg_num);

return(task-task_sg_num);

On Sun, 2008-02-10 at 14:26 -0500, Mark Tuttle wrote:
 Thanks for that information, I analysed your code to get a better
 understanding of exactly what was going on and was able to
 successfully patch what I needed to.
 
 http://www.tuttleresearch.com/80211patch.html
 
 Much appreciated,
 Mark Tuttle
 
 On 2/9/08, Nicholas A. Bellinger [EMAIL PROTECTED] wrote:
  On Sat, 2008-02-09 at 01:28 -0500, Mark Tuttle wrote:
   Regarding:
   commit 18dabf473e15850c0dbc8ff13ac1e2806d542c15
  
   This actually breaks the 802.11 subsystem (http://80211.sf.net) which
   relies on the page struct. (ieee80211_crypt_wep.c, line 190) Can
   anyone suggest an alternative kernel function or method? As of 2.6.24,
   the 802.11 subsystem cannot compile.
  
 
  Greetings Mark,
 
  I have been updating the LIO-Target codebase to 2.6.24 recently, and
  posted some information about what I ended up doing for struct
  scatterlist-page changing to scatterlist-page_link and
  include/linux/scatterlist.h
 
  http://lkml.org/lkml/2008/2/4/111
 
  Hope this helps,
 
  --nab
 
 
 --
 To unsubscribe from this list: send the line unsubscribe linux-kernel in
 the body of a message to [EMAIL PROTECTED]
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
 Please read the FAQ at  http://www.tux.org/lkml/
 

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: struct page vs page_link

2008-02-10 Thread Mark Tuttle
Thanks for that information, I analysed your code to get a better
understanding of exactly what was going on and was able to
successfully patch what I needed to.

http://www.tuttleresearch.com/80211patch.html

Much appreciated,
Mark Tuttle

On 2/9/08, Nicholas A. Bellinger <[EMAIL PROTECTED]> wrote:
> On Sat, 2008-02-09 at 01:28 -0500, Mark Tuttle wrote:
> > Regarding:
> > commit 18dabf473e15850c0dbc8ff13ac1e2806d542c15
> >
> > This actually breaks the 802.11 subsystem (http://80211.sf.net) which
> > relies on the page struct. (ieee80211_crypt_wep.c, line 190) Can
> > anyone suggest an alternative kernel function or method? As of 2.6.24,
> > the 802.11 subsystem cannot compile.
> >
>
> Greetings Mark,
>
> I have been updating the LIO-Target codebase to 2.6.24 recently, and
> posted some information about what I ended up doing for struct
> scatterlist->page changing to scatterlist->page_link and
> include/linux/scatterlist.h
>
> http://lkml.org/lkml/2008/2/4/111
>
> Hope this helps,
>
> --nab
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: struct page vs page_link

2008-02-10 Thread Mark Tuttle
Thanks for that information, I analysed your code to get a better
understanding of exactly what was going on and was able to
successfully patch what I needed to.

http://www.tuttleresearch.com/80211patch.html

Much appreciated,
Mark Tuttle

On 2/9/08, Nicholas A. Bellinger [EMAIL PROTECTED] wrote:
 On Sat, 2008-02-09 at 01:28 -0500, Mark Tuttle wrote:
  Regarding:
  commit 18dabf473e15850c0dbc8ff13ac1e2806d542c15
 
  This actually breaks the 802.11 subsystem (http://80211.sf.net) which
  relies on the page struct. (ieee80211_crypt_wep.c, line 190) Can
  anyone suggest an alternative kernel function or method? As of 2.6.24,
  the 802.11 subsystem cannot compile.
 

 Greetings Mark,

 I have been updating the LIO-Target codebase to 2.6.24 recently, and
 posted some information about what I ended up doing for struct
 scatterlist-page changing to scatterlist-page_link and
 include/linux/scatterlist.h

 http://lkml.org/lkml/2008/2/4/111

 Hope this helps,

 --nab


--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: struct page vs page_link

2008-02-09 Thread Nicholas A. Bellinger
On Sat, 2008-02-09 at 01:28 -0500, Mark Tuttle wrote:
> Regarding:
> commit 18dabf473e15850c0dbc8ff13ac1e2806d542c15
> 
> This actually breaks the 802.11 subsystem (http://80211.sf.net) which
> relies on the page struct. (ieee80211_crypt_wep.c, line 190) Can
> anyone suggest an alternative kernel function or method? As of 2.6.24,
> the 802.11 subsystem cannot compile.
> 

Greetings Mark,

I have been updating the LIO-Target codebase to 2.6.24 recently, and
posted some information about what I ended up doing for struct
scatterlist->page changing to scatterlist->page_link and
include/linux/scatterlist.h

http://lkml.org/lkml/2008/2/4/111

Hope this helps,

--nab

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: struct page vs page_link

2008-02-09 Thread Nicholas A. Bellinger
On Sat, 2008-02-09 at 01:28 -0500, Mark Tuttle wrote:
 Regarding:
 commit 18dabf473e15850c0dbc8ff13ac1e2806d542c15
 
 This actually breaks the 802.11 subsystem (http://80211.sf.net) which
 relies on the page struct. (ieee80211_crypt_wep.c, line 190) Can
 anyone suggest an alternative kernel function or method? As of 2.6.24,
 the 802.11 subsystem cannot compile.
 

Greetings Mark,

I have been updating the LIO-Target codebase to 2.6.24 recently, and
posted some information about what I ended up doing for struct
scatterlist-page changing to scatterlist-page_link and
include/linux/scatterlist.h

http://lkml.org/lkml/2008/2/4/111

Hope this helps,

--nab

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


struct page vs page_link

2008-02-08 Thread Mark Tuttle
Regarding:
commit 18dabf473e15850c0dbc8ff13ac1e2806d542c15

This actually breaks the 802.11 subsystem (http://80211.sf.net) which
relies on the page struct. (ieee80211_crypt_wep.c, line 190) Can
anyone suggest an alternative kernel function or method? As of 2.6.24,
the 802.11 subsystem cannot compile.

Mark Tuttle
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


struct page vs page_link

2008-02-08 Thread Mark Tuttle
Regarding:
commit 18dabf473e15850c0dbc8ff13ac1e2806d542c15

This actually breaks the 802.11 subsystem (http://80211.sf.net) which
relies on the page struct. (ieee80211_crypt_wep.c, line 190) Can
anyone suggest an alternative kernel function or method? As of 2.6.24,
the 802.11 subsystem cannot compile.

Mark Tuttle
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/