Re: Questions about scsi.c

2007-10-30 Thread Jeff Garzik

Randy Dunlap wrote:

On Thu, 25 Oct 2007 16:40:35 -0500 Rob Landley wrote:


On Thursday 25 October 2007 12:32:41 pm Randy Dunlap wrote:

Entirely possible I'm doing something wrong:

   sect1 id=scsi_device.h
  titleinclude/scsi/scsi_device.h/title
  para
  /para
!Einclude/scsi/scsi_device.h
/sect1

!E is for exported symbols and that file has none.
USe !I instead.
So how do I handle a case like drivers/ata/libata-core.c which has 
EXPORT_SYMBOL() calls for functions that live in (and are documented in) 
other files, such as ata_scsi_ioctl() in drivers/ata/libata-scsi.c?


I don't see ata_scsi_ioctl() documented at all.  Are you looking at
a newer tree than I am?  (i'm using 2.6.24-rc1)

Long-term answer is that we prefer EXPORT_SYMBOL() to be used
just under the function that is being exported.  In this case,
the maintainer may be disagreeing with that.  [cc-ed]

Short-term answer is to use !Isource_filename_where_kernel_doc_is
as though it's not EXPORTed.  I think.


Yeah I tended to prefer that all exports be in one place, rather than 
scattered around and difficult to evaluate en masse :)


Jeff



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


Re: Questions about scsi.c

2007-10-30 Thread James Bottomley
On Tue, 2007-10-30 at 08:34 -0400, Jeff Garzik wrote:
 Randy Dunlap wrote:
  On Thu, 25 Oct 2007 16:40:35 -0500 Rob Landley wrote:
  
  On Thursday 25 October 2007 12:32:41 pm Randy Dunlap wrote:
  Entirely possible I'm doing something wrong:
 
 sect1 id=scsi_device.h
titleinclude/scsi/scsi_device.h/title
para
/para
  !Einclude/scsi/scsi_device.h
  /sect1
  !E is for exported symbols and that file has none.
  USe !I instead.
  So how do I handle a case like drivers/ata/libata-core.c which has 
  EXPORT_SYMBOL() calls for functions that live in (and are documented in) 
  other files, such as ata_scsi_ioctl() in drivers/ata/libata-scsi.c?
  
  I don't see ata_scsi_ioctl() documented at all.  Are you looking at
  a newer tree than I am?  (i'm using 2.6.24-rc1)
  
  Long-term answer is that we prefer EXPORT_SYMBOL() to be used
  just under the function that is being exported.  In this case,
  the maintainer may be disagreeing with that.  [cc-ed]
  
  Short-term answer is to use !Isource_filename_where_kernel_doc_is
  as though it's not EXPORTed.  I think.
 
 Yeah I tended to prefer that all exports be in one place, rather than 
 scattered around and difficult to evaluate en masse :)

My personal preference (and how I code) is export at the bottom of the
function.  However, it's one of those stylistic things that I'm happy to
have people code however they want (either everything at the bottom of
the file or all exports at the bottom of the exported function) as long
as they follow the current style of whatever file they're patching.

James


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


Re: Questions about scsi.c

2007-10-30 Thread Rob Landley
On Tuesday 30 October 2007 9:43:29 am James Bottomley wrote:
 On Tue, 2007-10-30 at 08:34 -0400, Jeff Garzik wrote:
  Randy Dunlap wrote:
   On Thu, 25 Oct 2007 16:40:35 -0500 Rob Landley wrote:
   On Thursday 25 October 2007 12:32:41 pm Randy Dunlap wrote:
   !E is for exported symbols and that file has none.
   USe !I instead.
  
   So how do I handle a case like drivers/ata/libata-core.c which has
   EXPORT_SYMBOL() calls for functions that live in (and are documented
   in) other files, such as ata_scsi_ioctl() in
   drivers/ata/libata-scsi.c?
...
  Yeah I tended to prefer that all exports be in one place, rather than
  scattered around and difficult to evaluate en masse :)

 My personal preference (and how I code) is export at the bottom of the
 function.  However, it's one of those stylistic things that I'm happy to
 have people code however they want (either everything at the bottom of
 the file or all exports at the bottom of the exported function) as long
 as they follow the current style of whatever file they're patching.

Actually, this one is written up in CodingStyle:

 In source files, separate functions with one blank line.  If the function
 is exported, the EXPORT* macro for it should follow immediately after the
 closing function brace line.  E.g.:

 int system_is_up(void)
 {
 return system_state == SYSTEM_RUNNING;
 }
 EXPORT_SYMBOL(system_is_up);

The functional problem is that when the EXPORT_SYMBOL() is in a different file 
entirely, the documentation infrastructure doesn't pick up that it's an 
exported function.

 James

Rob
-- 
One of my most productive days was throwing away 1000 lines of code.
  - Ken Thompson.
-
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Questions about scsi.c

2007-10-25 Thread Rob Landley
Ok, I'm reading the code and trying to update the kerneldoc comments (first 
stab at it attached, a Documentation/DocBook/scsi_midlayer.tmpl is in the 
works), and I have a few random questions from the read-through:

Why does __scsi_put_command() pass in both a Scsi_Host * and struct device * 
when scsi_get_command() uses dev-host?  Is dev-host not guaranteed to be 
set?

scsi_put_command() notes the command must not belong to any lists but then 
inside the function it says serious error if the command hasn't come form a 
device list and does a BUG_ON(list_empty(cmd-list));

scsi_setup_command_freelist() is protection against OOM locking the system 
solid, right?  Makes sure there's always preallocated memory to send at least 
one SCSI command at a time to each host so we can swap enough to free more?

scsi_dispatch_command() I _think_ a nonzero return means the command was 
rejected and the device queue needs to be plugged, but I'm not 100% certain 
what that means.

The rest sort of seems to make sense, although the kerneldoc comments in 
include/scsi/scsi_device.h are before #defines instead of before function 
definitions so the make xmldocs infrastructure (something in either 
scripts/basic/docproc.c or scripts/kernel-doc) skips right over it
because it can't figure out the argument types.  Separate issue, todo item for 
later...

Rob
-- 
One of my most productive days was throwing away 1000 lines of code.
  - Ken Thompson.
diff -r a868e8217782 drivers/scsi/scsi.c
--- a/drivers/scsi/scsi.c	Mon Oct 22 19:40:02 2007 -0700
+++ b/drivers/scsi/scsi.c	Thu Oct 25 06:01:43 2007 -0500
@@ -122,6 +122,11 @@ static const char *const scsi_device_typ
 	Automation/Drive ,
 };
 
+/**
+ * scsi_device_type - Return 17 char string indicating device type.
+ * @type: type number to look up
+ */
+
 const char * scsi_device_type(unsigned type)
 {
 	if (type == 0x1e)
@@ -156,6 +161,14 @@ static struct scsi_host_cmd_pool scsi_cm
 
 static DEFINE_MUTEX(host_cmd_pool_mutex);
 
+/**
+ * __scsi_get_command - Allocate a struct scsi_cmnd
+ * @shost: host to transmit command
+ * @gfp_mask: allocation mask
+ *
+ * Description: allocate a struct scsi_cmd from host's slab, recycling from the
+ *  host's free_list if necessary.
+ */
 struct scsi_cmnd *__scsi_get_command(struct Scsi_Host *shost, gfp_t gfp_mask)
 {
 	struct scsi_cmnd *cmd;
@@ -179,13 +192,10 @@ struct scsi_cmnd *__scsi_get_command(str
 }
 EXPORT_SYMBOL_GPL(__scsi_get_command);
 
-/*
- * Function:	scsi_get_command()
- *
- * Purpose:	Allocate and setup a scsi command block
- *
- * Arguments:	dev	- parent scsi device
- *		gfp_mask- allocator flags
+/**
+ * scsi_get_command - Allocate and setup a scsi command block
+ * @dev: parent scsi device
+ * @gfp_mask: allocator flags
  *
  * Returns:	The allocated scsi command structure.
  */
@@ -217,6 +227,12 @@ struct scsi_cmnd *scsi_get_command(struc
 }
 EXPORT_SYMBOL(scsi_get_command);
 
+/**
+ * __scsi_put_command - Free a struct scsi_cmnd
+ * @shost: dev-host
+ * @cmd: Command to free
+ * @dev: parent scsi device
+ */
 void __scsi_put_command(struct Scsi_Host *shost, struct scsi_cmnd *cmd,
 			struct device *dev)
 {
@@ -237,12 +253,9 @@ void __scsi_put_command(struct Scsi_Host
 }
 EXPORT_SYMBOL(__scsi_put_command);
 
-/*
- * Function:	scsi_put_command()
- *
- * Purpose:	Free a scsi command block
- *
- * Arguments:	cmd	- command block to free
+/**
+ * scsi_put_command - Free a scsi command block
+ * @cmd: command block to free
  *
  * Returns:	Nothing.
  *
@@ -263,12 +276,13 @@ void scsi_put_command(struct scsi_cmnd *
 }
 EXPORT_SYMBOL(scsi_put_command);
 
-/*
- * Function:	scsi_setup_command_freelist()
- *
- * Purpose:	Setup the command freelist for a scsi host.
- *
- * Arguments:	shost	- host to allocate the freelist for.
+/**
+ * scsi_setup_command_freelist - Setup the command freelist for a scsi host.
+ * @shost: host to allocate the freelist for.
+ *
+ * Description: The command freelist protects against system-wide out of memory
+ * deadlock by preallocating one SCSI command structure for each host, so the
+ * system can always write to a swap file on a device associated with that host.
  *
  * Returns:	Nothing.
  */
@@ -318,12 +332,9 @@ int scsi_setup_command_freelist(struct S
 
 }
 
-/*
- * Function:	scsi_destroy_command_freelist()
- *
- * Purpose:	Release the command freelist for a scsi host.
- *
- * Arguments:	shost	- host that's freelist is going to be destroyed
+/**
+ * scsi_destroy_command_freelist - Release the command freelist for a scsi host.
+ * @shost: host that's freelist is going to be destroyed
  */
 void scsi_destroy_command_freelist(struct Scsi_Host *shost)
 {
@@ -441,8 +452,12 @@ void scsi_log_completion(struct scsi_cmn
 }
 #endif
 
-/* 
- * Assign a serial number to the request for error recovery
+/**
+ * scsi_cmd_get_serial - Assign a serial number to a command
+ * @host: the scsi host
+ * @cmd: command to assign serial number to
+ *
+ * Description: a serial number identifies a request for 

Re: Questions about scsi.c

2007-10-25 Thread Randy Dunlap
On Thu, 25 Oct 2007 06:06:03 -0500 Rob Landley wrote:

 The rest sort of seems to make sense, although the kerneldoc comments in 
 include/scsi/scsi_device.h are before #defines instead of before function 
 definitions so the make xmldocs infrastructure (something in either 
 scripts/basic/docproc.c or scripts/kernel-doc) skips right over it
 because it can't figure out the argument types.  Separate issue, todo item 
 for 
 later...

scripts/kernel-doc is supposed to (and usually does) handle
kernel-doc notation of a #define macro.  Are these 2 not working?


---
~Randy
-
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Questions about scsi.c

2007-10-25 Thread Rob Landley
On Thursday 25 October 2007 10:40:39 am Randy Dunlap wrote:
 On Thu, 25 Oct 2007 06:06:03 -0500 Rob Landley wrote:
  The rest sort of seems to make sense, although the kerneldoc comments in
  include/scsi/scsi_device.h are before #defines instead of before function
  definitions so the make xmldocs infrastructure (something in either
  scripts/basic/docproc.c or scripts/kernel-doc) skips right over it
  because it can't figure out the argument types.  Separate issue, todo
  item for later...

 scripts/kernel-doc is supposed to (and usually does) handle
 kernel-doc notation of a #define macro.  Are these 2 not working?

Not when I tried it.

 $ make xmldocs
 make -C /home/landley/linux/hg O=/home/landley/linux/temp xmldocs
   DOCPROC Documentation/DocBook/scsi_midlayer.xml
 Warning(/home/landley/linux/hg//include/scsi/scsi_device.h): no structured
 comments found 

Entirely possible I'm doing something wrong:

   sect1 id=scsi_device.h
  titleinclude/scsi/scsi_device.h/title
  para
  /para
!Einclude/scsi/scsi_device.h
/sect1

Rob
-- 
One of my most productive days was throwing away 1000 lines of code.
  - Ken Thompson.
-
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Questions about scsi.c

2007-10-25 Thread Randy Dunlap
On Thu, 25 Oct 2007 13:25:37 -0500 Rob Landley wrote:

 On Thursday 25 October 2007 10:40:39 am Randy Dunlap wrote:
  On Thu, 25 Oct 2007 06:06:03 -0500 Rob Landley wrote:
   The rest sort of seems to make sense, although the kerneldoc comments in
   include/scsi/scsi_device.h are before #defines instead of before function
   definitions so the make xmldocs infrastructure (something in either
   scripts/basic/docproc.c or scripts/kernel-doc) skips right over it
   because it can't figure out the argument types.  Separate issue, todo
   item for later...
 
  scripts/kernel-doc is supposed to (and usually does) handle
  kernel-doc notation of a #define macro.  Are these 2 not working?
 
 Not when I tried it.
 
  $ make xmldocs
  make -C /home/landley/linux/hg O=/home/landley/linux/temp xmldocs
DOCPROC Documentation/DocBook/scsi_midlayer.xml
  Warning(/home/landley/linux/hg//include/scsi/scsi_device.h): no structured
  comments found 
 
 Entirely possible I'm doing something wrong:
 
sect1 id=scsi_device.h
   titleinclude/scsi/scsi_device.h/title
   para
   /para
 !Einclude/scsi/scsi_device.h
 /sect1

!E is for exported symbols and that file has none.
USe !I instead.

---
~Randy
-
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Questions about scsi.c

2007-10-25 Thread Rob Landley
On Thursday 25 October 2007 12:32:41 pm Randy Dunlap wrote:
  Entirely possible I'm doing something wrong:
 
 sect1 id=scsi_device.h
titleinclude/scsi/scsi_device.h/title
para
/para
  !Einclude/scsi/scsi_device.h
  /sect1

 !E is for exported symbols and that file has none.
 USe !I instead.

Ah, that did it.  Thanks.

Rob
-- 
One of my most productive days was throwing away 1000 lines of code.
  - Ken Thompson.
-
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Questions about scsi.c

2007-10-25 Thread Rob Landley
On Thursday 25 October 2007 12:32:41 pm Randy Dunlap wrote:
  Entirely possible I'm doing something wrong:
 
 sect1 id=scsi_device.h
titleinclude/scsi/scsi_device.h/title
para
/para
  !Einclude/scsi/scsi_device.h
  /sect1

 !E is for exported symbols and that file has none.
 USe !I instead.

So how do I handle a case like drivers/ata/libata-core.c which has 
EXPORT_SYMBOL() calls for functions that live in (and are documented in) 
other files, such as ata_scsi_ioctl() in drivers/ata/libata-scsi.c?

 ---
 ~Randy

Rob
-- 
One of my most productive days was throwing away 1000 lines of code.
  - Ken Thompson.
-
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Questions about scsi.c

2007-10-25 Thread Randy Dunlap
On Thu, 25 Oct 2007 16:40:35 -0500 Rob Landley wrote:

 On Thursday 25 October 2007 12:32:41 pm Randy Dunlap wrote:
   Entirely possible I'm doing something wrong:
  
  sect1 id=scsi_device.h
 titleinclude/scsi/scsi_device.h/title
 para
 /para
   !Einclude/scsi/scsi_device.h
   /sect1
 
  !E is for exported symbols and that file has none.
  USe !I instead.
 
 So how do I handle a case like drivers/ata/libata-core.c which has 
 EXPORT_SYMBOL() calls for functions that live in (and are documented in) 
 other files, such as ata_scsi_ioctl() in drivers/ata/libata-scsi.c?

I don't see ata_scsi_ioctl() documented at all.  Are you looking at
a newer tree than I am?  (i'm using 2.6.24-rc1)

Long-term answer is that we prefer EXPORT_SYMBOL() to be used
just under the function that is being exported.  In this case,
the maintainer may be disagreeing with that.  [cc-ed]

Short-term answer is to use !Isource_filename_where_kernel_doc_is
as though it's not EXPORTed.  I think.

---
~Randy
-
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html