aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdel Gadllah <adel.gadllah@gmail.com>2008-06-27 03:16:17 -0400
committerJens Axboe <jens.axboe@oracle.com>2008-07-03 07:21:14 -0400
commit06a452e5b95eb669b7ad414ccf587dfc2d91b217 (patch)
tree44675dae6a98b414dc3d7778ef8a74da00fee92a
parent2b272d4f7953a73ea1c1f7ba33d5a2d7439ce71b (diff)
cmdfilter: extend default read filter
This patch adds the commands that the former sg filter allowed for read access to the cmdfilter to keep userspace apps that rely on them working. Signed-off-by: Adel Gadllah <adel.gadllah@gmail.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
-rw-r--r--block/cmd-filter.c9
-rw-r--r--drivers/scsi/sg.c4
2 files changed, 9 insertions, 4 deletions
diff --git a/block/cmd-filter.c b/block/cmd-filter.c
index 35e327ceaa97..eec4404fd357 100644
--- a/block/cmd-filter.c
+++ b/block/cmd-filter.c
@@ -219,6 +219,10 @@ static struct kobj_type rcf_ktype = {
219 .default_attrs = default_attrs, 219 .default_attrs = default_attrs,
220}; 220};
221 221
222#ifndef MAINTENANCE_IN_CMD
223#define MAINTENANCE_IN_CMD 0xa3
224#endif
225
222static void rcf_set_defaults(struct blk_scsi_cmd_filter *filter) 226static void rcf_set_defaults(struct blk_scsi_cmd_filter *filter)
223{ 227{
224 /* Basic read-only commands */ 228 /* Basic read-only commands */
@@ -230,6 +234,7 @@ static void rcf_set_defaults(struct blk_scsi_cmd_filter *filter)
230 __set_bit(READ_16, filter->read_ok); 234 __set_bit(READ_16, filter->read_ok);
231 __set_bit(READ_BUFFER, filter->read_ok); 235 __set_bit(READ_BUFFER, filter->read_ok);
232 __set_bit(READ_DEFECT_DATA, filter->read_ok); 236 __set_bit(READ_DEFECT_DATA, filter->read_ok);
237 __set_bit(READ_CAPACITY, filter->read_ok);
233 __set_bit(READ_LONG, filter->read_ok); 238 __set_bit(READ_LONG, filter->read_ok);
234 __set_bit(INQUIRY, filter->read_ok); 239 __set_bit(INQUIRY, filter->read_ok);
235 __set_bit(MODE_SENSE, filter->read_ok); 240 __set_bit(MODE_SENSE, filter->read_ok);
@@ -238,6 +243,10 @@ static void rcf_set_defaults(struct blk_scsi_cmd_filter *filter)
238 __set_bit(START_STOP, filter->read_ok); 243 __set_bit(START_STOP, filter->read_ok);
239 __set_bit(GPCMD_VERIFY_10, filter->read_ok); 244 __set_bit(GPCMD_VERIFY_10, filter->read_ok);
240 __set_bit(VERIFY_16, filter->read_ok); 245 __set_bit(VERIFY_16, filter->read_ok);
246 __set_bit(REPORT_LUNS, filter->read_ok);
247 __set_bit(SERVICE_ACTION_IN, filter->read_ok);
248 __set_bit(RECEIVE_DIAGNOSTIC, filter->read_ok);
249 __set_bit(MAINTENANCE_IN_CMD, filter->read_ok);
241 __set_bit(GPCMD_READ_BUFFER_CAPACITY, filter->read_ok); 250 __set_bit(GPCMD_READ_BUFFER_CAPACITY, filter->read_ok);
242 251
243 /* Audio CD commands */ 252 /* Audio CD commands */
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
index 62b5bd5fd761..fe694f0ee19a 100644
--- a/drivers/scsi/sg.c
+++ b/drivers/scsi/sg.c
@@ -2502,10 +2502,6 @@ sg_page_free(struct page *page, int size)
2502 __free_pages(page, order); 2502 __free_pages(page, order);
2503} 2503}
2504 2504
2505#ifndef MAINTENANCE_IN_CMD
2506#define MAINTENANCE_IN_CMD 0xa3
2507#endif
2508
2509#ifdef CONFIG_SCSI_PROC_FS 2505#ifdef CONFIG_SCSI_PROC_FS
2510static int 2506static int
2511sg_idr_max_id(int id, void *p, void *data) 2507sg_idr_max_id(int id, void *p, void *data)