Block Layer Data Integrity
PATCH 1/1 Block Layer Data Integrity
A couple of generic cleanup patches in preparation for the data integrity code.
- Make scsi_data_buffer cache generic
- Move sd.h from include/scsi to drivers/scsi
- Make a few functions callable from outside of sd.c (i.e. sd-dif.c)
PATCH 1/1 scsi: Rename scsi_bidi_sdb_cache
The data integrity changes need to dynamically allocate scsi_data_buffers too. Rename scsi_bidi_sdb_cache for clarity.
---
1 file changed, 13 insertions(+), 13 deletions(-)
drivers/scsi/scsi_lib.c | 26 +++++++++++++-------------
drivers/scsi/scsi_lib.c +13 -13
@@ -65,7 +65,7 @@ static struct scsi_host_sg_pool scsi_sg_ };#undef SP -static struct kmem_cache *scsi_bidi_sdb_cache; +static struct kmem_cache *scsi_sdb_cache;static void scsi_run_queue (struct request_queue *q);
@@ -775,7 +775,7 @@ void scsi_release_buffers(struct scsi_cmstruct scsi_data_buffer *bidi_sdb = cmd->request->next_rq->special;scsi_free_sgtable (bidi_sdb); -kmem_cache_free (scsi_bidi_sdb_cache, bidi_sdb); +kmem_cache_free (scsi_sdb_cache, bidi_sdb); cmd->request->next_rq->special =NULL ; } }
@@ -1050,7 +1050,7 @@ int scsi_init_io(struct scsi_cmnd *cmd,if (blk_bidi_rq (cmd->request)) {struct scsi_data_buffer *bidi_sdb =kmem_cache_zalloc ( - scsi_bidi_sdb_cache,GFP_ATOMIC ); + scsi_sdb_cache,GFP_ATOMIC );if (!bidi_sdb) { error =BLKPREP_DEFER ; goto err_exit;
@@ -1684,11 +1684,11 @@ int __init scsi_init_queue(void)return -ENOMEM ; } - scsi_bidi_sdb_cache =kmem_cache_create ("scsi_bidi_sdb" , -sizeof (struct scsi_data_buffer ), -0 ,0 ,NULL ); -if (!scsi_bidi_sdb_cache) { -printk (KERN_ERR "SCSI: can't init scsi bidi sdb cache\n" ); + scsi_sdb_cache =kmem_cache_create ("scsi_data_buffer" , +sizeof (struct scsi_data_buffer ), +0 ,0 ,NULL ); +if (!scsi_sdb_cache) { +printk (KERN_ERR "SCSI: can't init scsi sdb cache\n" ); goto cleanup_io_context; }
@@ -1701,7 +1701,7 @@ int __init scsi_init_queue(void)if (!sgp->slab) {printk (KERN_ERR "SCSI: can't init sg slab %s\n" , sgp->name); - goto cleanup_bidi_sdb; + goto cleanup_sdb; } sgp->pool = mempool_create_slab_pool(SG_MEMPOOL_SIZE,
@@ -1709,13 +1709,13 @@ int __init scsi_init_queue(void)if (!sgp->pool) {printk (KERN_ERR "SCSI: can't init sg mempool %s\n" , sgp->name); - goto cleanup_bidi_sdb; + goto cleanup_sdb; } }return 0 ; -cleanup_bidi_sdb: +cleanup_sdb:for (i =0 ; i <SG_MEMPOOL_NR ; i++) {struct scsi_host_sg_pool *sgp = scsi_sg_pools + i;if (sgp->pool)
@@ -1723,7 +1723,7 @@ cleanup_bidi_sdb:if (sgp->slab)kmem_cache_destroy (sgp->slab); } -kmem_cache_destroy (scsi_bidi_sdb_cache); +kmem_cache_destroy (scsi_sdb_cache); cleanup_io_context:kmem_cache_destroy (scsi_io_context_cache);
@@ -1735,7 +1735,7 @@ void scsi_exit_queue(void)int i;kmem_cache_destroy (scsi_io_context_cache); -kmem_cache_destroy (scsi_bidi_sdb_cache); +kmem_cache_destroy (scsi_sdb_cache);for (i =0 ; i <SG_MEMPOOL_NR ; i++) {struct scsi_host_sg_pool *sgp = scsi_sg_pools + i;
PATCH 1/1 sd: Move sd.h header file
In reply to Martin K. PetersenChristoph objected to having sd.h in include/scsi since it is internal to the sd driver. Move it to drivers/scsi/sd.h.
---
3 files changed, 58 insertions(+), 58 deletions(-) drivers/scsi/sd.c | 2 - drivers/scsi/sd.h | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++ include/scsi/sd.h | 57 -----------------------------------------------------
drivers/scsi/sd.c +1 -1
@@ -58,8 +58,8 @@#include <scsi/scsi_host.h> #include <scsi/scsi_ioctl.h> #include <scsi/scsicam.h> -#include <scsi/sd.h> +#include "sd.h" #include "scsi_logging.h" MODULE_AUTHOR ("Eric Youngdale" );
drivers/scsi/sd.h new file +57 -0
57 lines not on this page · raw message
include/scsi/sd.h deleted +0 -57
57 lines not on this page · raw message
PATCH 1/1 sd: Move scsi_disk() accessor function to sd.h
In reply to Martin K. Petersen---
2 files changed, 5 insertions(+), 5 deletions(-) drivers/scsi/sd.c | 5 ----- drivers/scsi/sd.h | 5 +++++
drivers/scsi/sd.c +0 -5
@@ -292,11 +292,6 @@ static int sd_major(int major_idx)BUG ();return 0 ;/* shut up gcc */ } -} - -static inline struct scsi_disk *scsi_disk (struct gendisk *disk) -{ - return container_of(disk->private_data, struct scsi_disk, driver); }static struct scsi_disk *__scsi_disk_get (struct gendisk *disk)
drivers/scsi/sd.h +5 -0
@@ -50,6 +50,11 @@ struct scsi_disk {extern void sd_print_sense_hdr (struct scsi_disk *,struct scsi_sense_hdr *); +static inline struct scsi_disk *scsi_disk (struct gendisk *disk) +{ + return container_of(disk->private_data, struct scsi_disk, driver); +} + #define sd_printk(prefix, sdsk, fmt, a...) \ (sdsk)->disk ? \ sdev_printk(prefix, (sdsk)->device, "[%s] " fmt, \
PATCH 1/1 sd: Allow sd_print_sense_hdr to be called outside of sd.c
In reply to Martin K. Petersen---
2 files changed, 3 insertions(+), 3 deletions(-) drivers/scsi/sd.c | 4 +--- drivers/scsi/sd.h | 2 ++
drivers/scsi/sd.c +1 -3
@@ -96,7 +96,6 @@ static int sd_done(struct scsi_cmnd *);static int sd_done (struct scsi_cmnd *);static void sd_read_capacity (struct scsi_disk *sdkp,unsigned char *buffer);static void scsi_disk_release (struct device *cdev); -static void sd_print_sense_hdr (struct scsi_disk *,struct scsi_sense_hdr *);static void sd_print_result (struct scsi_disk *,int );static DEFINE_IDR (sd_index_idr);
@@ -1929,8 +1928,7 @@ module_init(init_sd);module_init (init_sd);module_exit (exit_sd); -static void sd_print_sense_hdr (struct scsi_disk *sdkp, -struct scsi_sense_hdr *sshdr) +void sd_print_sense_hdr (struct scsi_disk *sdkp,struct scsi_sense_hdr *sshdr) {sd_printk (KERN_INFO , sdkp,"" );scsi_show_sense_hdr (sshdr);
drivers/scsi/sd.h +2 -0
@@ -48,6 +48,8 @@ struct scsi_disk { };#define to_scsi_disk (obj) container_of(obj,struct scsi_disk,dev) +extern void sd_print_sense_hdr (struct scsi_disk *,struct scsi_sense_hdr *); + #define sd_printk(prefix, sdsk, fmt, a...) \ (sdsk)->disk ? \ sdev_printk(prefix, (sdsk)->device, "[%s] " fmt, \