summaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-07-24 18:05:28 -0400
committerJames Bottomley <JBottomley@Parallels.com>2013-08-21 13:10:48 -0400
commite1ea2351fba3b96b20107b4483b133137f653717 (patch)
tree8a0b4a6fff6eaaba0114bb823be49f2a99dbf6be /drivers/scsi
parent584d88b2cd3b60507e708d2452651e4d3caa1b81 (diff)
[SCSI] sd: convert class code to use dev_groups
The dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the scsi disk class code to use the correct field. It required some functions to be moved around to place the show and store functions next to each other, the old order seemed to make no sense at all. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/sd.c149
1 files changed, 75 insertions, 74 deletions
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index 86fcf2c313ad..b58e8f815a00 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -132,8 +132,8 @@ static const char *sd_cache_types[] = {
132}; 132};
133 133
134static ssize_t 134static ssize_t
135sd_store_cache_type(struct device *dev, struct device_attribute *attr, 135cache_type_store(struct device *dev, struct device_attribute *attr,
136 const char *buf, size_t count) 136 const char *buf, size_t count)
137{ 137{
138 int i, ct = -1, rcd, wce, sp; 138 int i, ct = -1, rcd, wce, sp;
139 struct scsi_disk *sdkp = to_scsi_disk(dev); 139 struct scsi_disk *sdkp = to_scsi_disk(dev);
@@ -199,8 +199,18 @@ sd_store_cache_type(struct device *dev, struct device_attribute *attr,
199} 199}
200 200
201static ssize_t 201static ssize_t
202sd_store_manage_start_stop(struct device *dev, struct device_attribute *attr, 202manage_start_stop_show(struct device *dev, struct device_attribute *attr,
203 const char *buf, size_t count) 203 char *buf)
204{
205 struct scsi_disk *sdkp = to_scsi_disk(dev);
206 struct scsi_device *sdp = sdkp->device;
207
208 return snprintf(buf, 20, "%u\n", sdp->manage_start_stop);
209}
210
211static ssize_t
212manage_start_stop_store(struct device *dev, struct device_attribute *attr,
213 const char *buf, size_t count)
204{ 214{
205 struct scsi_disk *sdkp = to_scsi_disk(dev); 215 struct scsi_disk *sdkp = to_scsi_disk(dev);
206 struct scsi_device *sdp = sdkp->device; 216 struct scsi_device *sdp = sdkp->device;
@@ -212,10 +222,19 @@ sd_store_manage_start_stop(struct device *dev, struct device_attribute *attr,
212 222
213 return count; 223 return count;
214} 224}
225static DEVICE_ATTR_RW(manage_start_stop);
215 226
216static ssize_t 227static ssize_t
217sd_store_allow_restart(struct device *dev, struct device_attribute *attr, 228allow_restart_show(struct device *dev, struct device_attribute *attr, char *buf)
218 const char *buf, size_t count) 229{
230 struct scsi_disk *sdkp = to_scsi_disk(dev);
231
232 return snprintf(buf, 40, "%d\n", sdkp->device->allow_restart);
233}
234
235static ssize_t
236allow_restart_store(struct device *dev, struct device_attribute *attr,
237 const char *buf, size_t count)
219{ 238{
220 struct scsi_disk *sdkp = to_scsi_disk(dev); 239 struct scsi_disk *sdkp = to_scsi_disk(dev);
221 struct scsi_device *sdp = sdkp->device; 240 struct scsi_device *sdp = sdkp->device;
@@ -230,47 +249,30 @@ sd_store_allow_restart(struct device *dev, struct device_attribute *attr,
230 249
231 return count; 250 return count;
232} 251}
252static DEVICE_ATTR_RW(allow_restart);
233 253
234static ssize_t 254static ssize_t
235sd_show_cache_type(struct device *dev, struct device_attribute *attr, 255cache_type_show(struct device *dev, struct device_attribute *attr, char *buf)
236 char *buf)
237{ 256{
238 struct scsi_disk *sdkp = to_scsi_disk(dev); 257 struct scsi_disk *sdkp = to_scsi_disk(dev);
239 int ct = sdkp->RCD + 2*sdkp->WCE; 258 int ct = sdkp->RCD + 2*sdkp->WCE;
240 259
241 return snprintf(buf, 40, "%s\n", sd_cache_types[ct]); 260 return snprintf(buf, 40, "%s\n", sd_cache_types[ct]);
242} 261}
262static DEVICE_ATTR_RW(cache_type);
243 263
244static ssize_t 264static ssize_t
245sd_show_fua(struct device *dev, struct device_attribute *attr, char *buf) 265FUA_show(struct device *dev, struct device_attribute *attr, char *buf)
246{ 266{
247 struct scsi_disk *sdkp = to_scsi_disk(dev); 267 struct scsi_disk *sdkp = to_scsi_disk(dev);
248 268
249 return snprintf(buf, 20, "%u\n", sdkp->DPOFUA); 269 return snprintf(buf, 20, "%u\n", sdkp->DPOFUA);
250} 270}
271static DEVICE_ATTR_RO(FUA);
251 272
252static ssize_t 273static ssize_t
253sd_show_manage_start_stop(struct device *dev, struct device_attribute *attr, 274protection_type_show(struct device *dev, struct device_attribute *attr,
254 char *buf) 275 char *buf)
255{
256 struct scsi_disk *sdkp = to_scsi_disk(dev);
257 struct scsi_device *sdp = sdkp->device;
258
259 return snprintf(buf, 20, "%u\n", sdp->manage_start_stop);
260}
261
262static ssize_t
263sd_show_allow_restart(struct device *dev, struct device_attribute *attr,
264 char *buf)
265{
266 struct scsi_disk *sdkp = to_scsi_disk(dev);
267
268 return snprintf(buf, 40, "%d\n", sdkp->device->allow_restart);
269}
270
271static ssize_t
272sd_show_protection_type(struct device *dev, struct device_attribute *attr,
273 char *buf)
274{ 276{
275 struct scsi_disk *sdkp = to_scsi_disk(dev); 277 struct scsi_disk *sdkp = to_scsi_disk(dev);
276 278
@@ -278,8 +280,8 @@ sd_show_protection_type(struct device *dev, struct device_attribute *attr,
278} 280}
279 281
280static ssize_t 282static ssize_t
281sd_store_protection_type(struct device *dev, struct device_attribute *attr, 283protection_type_store(struct device *dev, struct device_attribute *attr,
282 const char *buf, size_t count) 284 const char *buf, size_t count)
283{ 285{
284 struct scsi_disk *sdkp = to_scsi_disk(dev); 286 struct scsi_disk *sdkp = to_scsi_disk(dev);
285 unsigned int val; 287 unsigned int val;
@@ -298,10 +300,11 @@ sd_store_protection_type(struct device *dev, struct device_attribute *attr,
298 300
299 return count; 301 return count;
300} 302}
303static DEVICE_ATTR_RW(protection_type);
301 304
302static ssize_t 305static ssize_t
303sd_show_protection_mode(struct device *dev, struct device_attribute *attr, 306protection_mode_show(struct device *dev, struct device_attribute *attr,
304 char *buf) 307 char *buf)
305{ 308{
306 struct scsi_disk *sdkp = to_scsi_disk(dev); 309 struct scsi_disk *sdkp = to_scsi_disk(dev);
307 struct scsi_device *sdp = sdkp->device; 310 struct scsi_device *sdp = sdkp->device;
@@ -320,24 +323,26 @@ sd_show_protection_mode(struct device *dev, struct device_attribute *attr,
320 323
321 return snprintf(buf, 20, "%s%u\n", dix ? "dix" : "dif", dif); 324 return snprintf(buf, 20, "%s%u\n", dix ? "dix" : "dif", dif);
322} 325}
326static DEVICE_ATTR_RO(protection_mode);
323 327
324static ssize_t 328static ssize_t
325sd_show_app_tag_own(struct device *dev, struct device_attribute *attr, 329app_tag_own_show(struct device *dev, struct device_attribute *attr, char *buf)
326 char *buf)
327{ 330{
328 struct scsi_disk *sdkp = to_scsi_disk(dev); 331 struct scsi_disk *sdkp = to_scsi_disk(dev);
329 332
330 return snprintf(buf, 20, "%u\n", sdkp->ATO); 333 return snprintf(buf, 20, "%u\n", sdkp->ATO);
331} 334}
335static DEVICE_ATTR_RO(app_tag_own);
332 336
333static ssize_t 337static ssize_t
334sd_show_thin_provisioning(struct device *dev, struct device_attribute *attr, 338thin_provisioning_show(struct device *dev, struct device_attribute *attr,
335 char *buf) 339 char *buf)
336{ 340{
337 struct scsi_disk *sdkp = to_scsi_disk(dev); 341 struct scsi_disk *sdkp = to_scsi_disk(dev);
338 342
339 return snprintf(buf, 20, "%u\n", sdkp->lbpme); 343 return snprintf(buf, 20, "%u\n", sdkp->lbpme);
340} 344}
345static DEVICE_ATTR_RO(thin_provisioning);
341 346
342static const char *lbp_mode[] = { 347static const char *lbp_mode[] = {
343 [SD_LBP_FULL] = "full", 348 [SD_LBP_FULL] = "full",
@@ -349,8 +354,8 @@ static const char *lbp_mode[] = {
349}; 354};
350 355
351static ssize_t 356static ssize_t
352sd_show_provisioning_mode(struct device *dev, struct device_attribute *attr, 357provisioning_mode_show(struct device *dev, struct device_attribute *attr,
353 char *buf) 358 char *buf)
354{ 359{
355 struct scsi_disk *sdkp = to_scsi_disk(dev); 360 struct scsi_disk *sdkp = to_scsi_disk(dev);
356 361
@@ -358,8 +363,8 @@ sd_show_provisioning_mode(struct device *dev, struct device_attribute *attr,
358} 363}
359 364
360static ssize_t 365static ssize_t
361sd_store_provisioning_mode(struct device *dev, struct device_attribute *attr, 366provisioning_mode_store(struct device *dev, struct device_attribute *attr,
362 const char *buf, size_t count) 367 const char *buf, size_t count)
363{ 368{
364 struct scsi_disk *sdkp = to_scsi_disk(dev); 369 struct scsi_disk *sdkp = to_scsi_disk(dev);
365 struct scsi_device *sdp = sdkp->device; 370 struct scsi_device *sdp = sdkp->device;
@@ -385,10 +390,11 @@ sd_store_provisioning_mode(struct device *dev, struct device_attribute *attr,
385 390
386 return count; 391 return count;
387} 392}
393static DEVICE_ATTR_RW(provisioning_mode);
388 394
389static ssize_t 395static ssize_t
390sd_show_max_medium_access_timeouts(struct device *dev, 396max_medium_access_timeouts_show(struct device *dev,
391 struct device_attribute *attr, char *buf) 397 struct device_attribute *attr, char *buf)
392{ 398{
393 struct scsi_disk *sdkp = to_scsi_disk(dev); 399 struct scsi_disk *sdkp = to_scsi_disk(dev);
394 400
@@ -396,9 +402,9 @@ sd_show_max_medium_access_timeouts(struct device *dev,
396} 402}
397 403
398static ssize_t 404static ssize_t
399sd_store_max_medium_access_timeouts(struct device *dev, 405max_medium_access_timeouts_store(struct device *dev,
400 struct device_attribute *attr, 406 struct device_attribute *attr, const char *buf,
401 const char *buf, size_t count) 407 size_t count)
402{ 408{
403 struct scsi_disk *sdkp = to_scsi_disk(dev); 409 struct scsi_disk *sdkp = to_scsi_disk(dev);
404 int err; 410 int err;
@@ -410,10 +416,11 @@ sd_store_max_medium_access_timeouts(struct device *dev,
410 416
411 return err ? err : count; 417 return err ? err : count;
412} 418}
419static DEVICE_ATTR_RW(max_medium_access_timeouts);
413 420
414static ssize_t 421static ssize_t
415sd_show_write_same_blocks(struct device *dev, struct device_attribute *attr, 422max_write_same_blocks_show(struct device *dev, struct device_attribute *attr,
416 char *buf) 423 char *buf)
417{ 424{
418 struct scsi_disk *sdkp = to_scsi_disk(dev); 425 struct scsi_disk *sdkp = to_scsi_disk(dev);
419 426
@@ -421,8 +428,8 @@ sd_show_write_same_blocks(struct device *dev, struct device_attribute *attr,
421} 428}
422 429
423static ssize_t 430static ssize_t
424sd_store_write_same_blocks(struct device *dev, struct device_attribute *attr, 431max_write_same_blocks_store(struct device *dev, struct device_attribute *attr,
425 const char *buf, size_t count) 432 const char *buf, size_t count)
426{ 433{
427 struct scsi_disk *sdkp = to_scsi_disk(dev); 434 struct scsi_disk *sdkp = to_scsi_disk(dev);
428 struct scsi_device *sdp = sdkp->device; 435 struct scsi_device *sdp = sdkp->device;
@@ -451,35 +458,29 @@ sd_store_write_same_blocks(struct device *dev, struct device_attribute *attr,
451 458
452 return count; 459 return count;
453} 460}
454 461static DEVICE_ATTR_RW(max_write_same_blocks);
455static struct device_attribute sd_disk_attrs[] = { 462
456 __ATTR(cache_type, S_IRUGO|S_IWUSR, sd_show_cache_type, 463static struct attribute *sd_disk_attrs[] = {
457 sd_store_cache_type), 464 &dev_attr_cache_type.attr,
458 __ATTR(FUA, S_IRUGO, sd_show_fua, NULL), 465 &dev_attr_FUA.attr,
459 __ATTR(allow_restart, S_IRUGO|S_IWUSR, sd_show_allow_restart, 466 &dev_attr_allow_restart.attr,
460 sd_store_allow_restart), 467 &dev_attr_manage_start_stop.attr,
461 __ATTR(manage_start_stop, S_IRUGO|S_IWUSR, sd_show_manage_start_stop, 468 &dev_attr_protection_type.attr,
462 sd_store_manage_start_stop), 469 &dev_attr_protection_mode.attr,
463 __ATTR(protection_type, S_IRUGO|S_IWUSR, sd_show_protection_type, 470 &dev_attr_app_tag_own.attr,
464 sd_store_protection_type), 471 &dev_attr_thin_provisioning.attr,
465 __ATTR(protection_mode, S_IRUGO, sd_show_protection_mode, NULL), 472 &dev_attr_provisioning_mode.attr,
466 __ATTR(app_tag_own, S_IRUGO, sd_show_app_tag_own, NULL), 473 &dev_attr_max_write_same_blocks.attr,
467 __ATTR(thin_provisioning, S_IRUGO, sd_show_thin_provisioning, NULL), 474 &dev_attr_max_medium_access_timeouts.attr,
468 __ATTR(provisioning_mode, S_IRUGO|S_IWUSR, sd_show_provisioning_mode, 475 NULL,
469 sd_store_provisioning_mode),
470 __ATTR(max_write_same_blocks, S_IRUGO|S_IWUSR,
471 sd_show_write_same_blocks, sd_store_write_same_blocks),
472 __ATTR(max_medium_access_timeouts, S_IRUGO|S_IWUSR,
473 sd_show_max_medium_access_timeouts,
474 sd_store_max_medium_access_timeouts),
475 __ATTR_NULL,
476}; 476};
477ATTRIBUTE_GROUPS(sd_disk);
477 478
478static struct class sd_disk_class = { 479static struct class sd_disk_class = {
479 .name = "scsi_disk", 480 .name = "scsi_disk",
480 .owner = THIS_MODULE, 481 .owner = THIS_MODULE,
481 .dev_release = scsi_disk_release, 482 .dev_release = scsi_disk_release,
482 .dev_attrs = sd_disk_attrs, 483 .dev_groups = sd_disk_groups,
483}; 484};
484 485
485static const struct dev_pm_ops sd_pm_ops = { 486static const struct dev_pm_ops sd_pm_ops = {