scsi_lib: Convert GFP_ATOMIC to gfp_flags
PATCH 1/1 scsi_lib: Convert GFP_ATOMIC to gfp_flags
scsi_init_io() is already passed a gfp_mask, so we should use that instead of an explicit GFP_ATOMIC
drivers/scsi/scsi_lib.c +3 -3
@@ -1048,8 +1048,8 @@ int scsi_init_io(struct scsi_cmnd *cmd, gfp_t gfp_mask) goto err_exit;if (blk_bidi_rq (cmd->request)) { -struct scsi_data_buffer *bidi_sdb =kmem_cache_zalloc ( - scsi_bidi_sdb_cache,GFP_ATOMIC ); +struct scsi_data_buffer *bidi_sdb; + bidi_sdb =kmem_cache_zalloc (scsi_bidi_sdb_cache, gfp_mask);if (!bidi_sdb) { error =BLKPREP_DEFER ; goto err_exit;
@@ -1057,7 +1057,7 @@ int scsi_init_io(struct scsi_cmnd *cmd, gfp_t gfp_mask) cmd->request->next_rq->special = bidi_sdb; error =scsi_init_sgtable (cmd->request->next_rq, bidi_sdb, -GFP_ATOMIC ); + gfp_mask);if (error) goto err_exit; }
Signature · 4 lines
Intel are signing my paycheques ... these opinions are still mine "Bill, look, we understand that you're interested in selling us this operating system, but compare it to ours. We can't possibly take such a retrograde step."
Sorry, $SUBJECT should have read 'gfp_mask' instead of 'gfp_flags'.
Signature · 4 lines
Intel are signing my paycheques ... these opinions are still mine "Bill, look, we understand that you're interested in selling us this operating system, but compare it to ours. We can't possibly take such a retrograde step."
Quoted 22 lines · Matthew Wilcox
scsi_init_io()is already passed agfp_mask, so we should use that instead of an explicitGFP_ATOMICSigned-off-by Matthew Wilcox <[email protected]>drivers/scsi/scsi_lib.c +2
-2@@ -1048,8 +1048,8 @@ int scsi_init_io(struct scsi_cmnd *cmd, gfp_t gfp_mask) goto err_exit;if (blk_bidi_rq (cmd->request)) { -struct scsi_data_buffer *bidi_sdb =kmem_cache_zalloc ( - scsi_bidi_sdb_cache,GFP_ATOMIC ); +struct scsi_data_buffer *bidi_sdb; + bidi_sdb =kmem_cache_zalloc (scsi_bidi_sdb_cache, gfp_mask);if (!bidi_sdb) { error =BLKPREP_DEFER ; goto err_exit;
drivers/scsi/scsi_lib.c int scsi_init_io(struct scsi_cmnd *cmd, gfp_t gfp_mask) · line 1063
Quoted 8 lines
drivers/scsi/scsi_lib.c +1
-1@@ -1057,7 +1057,7 @@ int scsi_init_io(struct scsi_cmnd *cmd, gfp_t gfp_mask) cmd->request->next_rq->special = bidi_sdb; error =scsi_init_sgtable (cmd->request->next_rq, bidi_sdb, -GFP_ATOMIC ); + gfp_mask);if (error) goto err_exit; }
Sorry for the late reply. Thanks for the patch but ...
Jens does not like a second part in a compound allocation to wait. This is because it can cause a deadlock between contenders that both grabbed half the resource and are waiting for the second part, if they don't wait, and release the first part at least one can continue.
Perhaps a small change to the patch would be better. (See below)
Boaz
---
From: Matthew Wilcox <[email protected]>
Date: Thu, 6 Mar 2008 17:21:47 +0200
Subject: [PATCH] scsi_lib: Convert GFP_ATOMIC to gfp_flags
scsi_init_io() is already passed a gfp_mask, so we should use that instead of an explicit GFP_ATOMIC
--- drivers/scsi/scsi_lib.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-)
drivers/scsi/scsi_lib.c +4 -3
@@ -1047,8 +1047,9 @@ int scsi_init_io(struct scsi_cmnd *cmd, gfp_t gfp_mask) goto err_exit;if (blk_bidi_rq (cmd->request)) { -struct scsi_data_buffer *bidi_sdb =kmem_cache_zalloc ( - scsi_bidi_sdb_cache,GFP_ATOMIC ); +struct scsi_data_buffer *bidi_sdb; + bidi_sdb =kmem_cache_zalloc (scsi_bidi_sdb_cache, + gfp_mask & ~__GFP_WAIT);if (!bidi_sdb) { error =BLKPREP_DEFER ; goto err_exit;
@@ -1056,7 +1057,7 @@ int scsi_init_io(struct scsi_cmnd *cmd, gfp_t gfp_mask) cmd->request->next_rq->special = bidi_sdb; error =scsi_init_sgtable (cmd->request->next_rq, bidi_sdb, -GFP_ATOMIC ); + gfp_mask & ~__GFP_WAIT);if (error) goto err_exit; }
Signature · 1 line
1.5.3.3