|
31 | 31 | #define ALUA_DH_NAME "alua"
|
32 | 32 | #define ALUA_DH_VER "2.0"
|
33 | 33 |
|
34 |
| -#define TPGS_STATE_OPTIMIZED 0x0 |
35 |
| -#define TPGS_STATE_NONOPTIMIZED 0x1 |
36 |
| -#define TPGS_STATE_STANDBY 0x2 |
37 |
| -#define TPGS_STATE_UNAVAILABLE 0x3 |
38 |
| -#define TPGS_STATE_LBA_DEPENDENT 0x4 |
39 |
| -#define TPGS_STATE_OFFLINE 0xe |
40 |
| -#define TPGS_STATE_TRANSITIONING 0xf |
41 |
| - |
42 | 34 | #define TPGS_SUPPORT_NONE 0x00
|
43 | 35 | #define TPGS_SUPPORT_OPTIMIZED 0x01
|
44 | 36 | #define TPGS_SUPPORT_NONOPTIMIZED 0x02
|
@@ -180,7 +172,7 @@ static int submit_stpg(struct scsi_device *sdev, int group_id,
|
180 | 172 |
|
181 | 173 | /* Prepare the data buffer */
|
182 | 174 | memset(stpg_data, 0, stpg_len);
|
183 |
| - stpg_data[4] = TPGS_STATE_OPTIMIZED & 0x0f; |
| 175 | + stpg_data[4] = SCSI_ACCESS_STATE_OPTIMAL; |
184 | 176 | put_unaligned_be16(group_id, &stpg_data[6]);
|
185 | 177 |
|
186 | 178 | /* Prepare the command. */
|
@@ -248,7 +240,7 @@ struct alua_port_group *alua_alloc_pg(struct scsi_device *sdev,
|
248 | 240 | }
|
249 | 241 | pg->group_id = group_id;
|
250 | 242 | pg->tpgs = tpgs;
|
251 |
| - pg->state = TPGS_STATE_OPTIMIZED; |
| 243 | + pg->state = SCSI_ACCESS_STATE_OPTIMAL; |
252 | 244 | if (optimize_stpg)
|
253 | 245 | pg->flags |= ALUA_OPTIMIZE_STPG;
|
254 | 246 | kref_init(&pg->kref);
|
@@ -378,22 +370,22 @@ static int alua_check_vpd(struct scsi_device *sdev, struct alua_dh_data *h,
|
378 | 370 | return SCSI_DH_OK;
|
379 | 371 | }
|
380 | 372 |
|
381 |
| -static char print_alua_state(int state) |
| 373 | +static char print_alua_state(unsigned char state) |
382 | 374 | {
|
383 | 375 | switch (state) {
|
384 |
| - case TPGS_STATE_OPTIMIZED: |
| 376 | + case SCSI_ACCESS_STATE_OPTIMAL: |
385 | 377 | return 'A';
|
386 |
| - case TPGS_STATE_NONOPTIMIZED: |
| 378 | + case SCSI_ACCESS_STATE_ACTIVE: |
387 | 379 | return 'N';
|
388 |
| - case TPGS_STATE_STANDBY: |
| 380 | + case SCSI_ACCESS_STATE_STANDBY: |
389 | 381 | return 'S';
|
390 |
| - case TPGS_STATE_UNAVAILABLE: |
| 382 | + case SCSI_ACCESS_STATE_UNAVAILABLE: |
391 | 383 | return 'U';
|
392 |
| - case TPGS_STATE_LBA_DEPENDENT: |
| 384 | + case SCSI_ACCESS_STATE_LBA: |
393 | 385 | return 'L';
|
394 |
| - case TPGS_STATE_OFFLINE: |
| 386 | + case SCSI_ACCESS_STATE_OFFLINE: |
395 | 387 | return 'O';
|
396 |
| - case TPGS_STATE_TRANSITIONING: |
| 388 | + case SCSI_ACCESS_STATE_TRANSITIONING: |
397 | 389 | return 'T';
|
398 | 390 | default:
|
399 | 391 | return 'X';
|
@@ -647,19 +639,19 @@ static int alua_rtpg(struct scsi_device *sdev, struct alua_port_group *pg)
|
647 | 639 | valid_states&TPGS_SUPPORT_OPTIMIZED?'A':'a');
|
648 | 640 |
|
649 | 641 | switch (pg->state) {
|
650 |
| - case TPGS_STATE_TRANSITIONING: |
| 642 | + case SCSI_ACCESS_STATE_TRANSITIONING: |
651 | 643 | if (time_before(jiffies, pg->expiry)) {
|
652 | 644 | /* State transition, retry */
|
653 | 645 | pg->interval = 2;
|
654 | 646 | err = SCSI_DH_RETRY;
|
655 | 647 | } else {
|
656 | 648 | /* Transitioning time exceeded, set port to standby */
|
657 | 649 | err = SCSI_DH_IO;
|
658 |
| - pg->state = TPGS_STATE_STANDBY; |
| 650 | + pg->state = SCSI_ACCESS_STATE_STANDBY; |
659 | 651 | pg->expiry = 0;
|
660 | 652 | }
|
661 | 653 | break;
|
662 |
| - case TPGS_STATE_OFFLINE: |
| 654 | + case SCSI_ACCESS_STATE_OFFLINE: |
663 | 655 | /* Path unusable */
|
664 | 656 | err = SCSI_DH_DEV_OFFLINED;
|
665 | 657 | pg->expiry = 0;
|
@@ -693,20 +685,20 @@ static unsigned alua_stpg(struct scsi_device *sdev, struct alua_port_group *pg)
|
693 | 685 | return SCSI_DH_RETRY;
|
694 | 686 | }
|
695 | 687 | switch (pg->state) {
|
696 |
| - case TPGS_STATE_OPTIMIZED: |
| 688 | + case SCSI_ACCESS_STATE_OPTIMAL: |
697 | 689 | return SCSI_DH_OK;
|
698 |
| - case TPGS_STATE_NONOPTIMIZED: |
| 690 | + case SCSI_ACCESS_STATE_ACTIVE: |
699 | 691 | if ((pg->flags & ALUA_OPTIMIZE_STPG) &&
|
700 | 692 | !pg->pref &&
|
701 | 693 | (pg->tpgs & TPGS_MODE_IMPLICIT))
|
702 | 694 | return SCSI_DH_OK;
|
703 | 695 | break;
|
704 |
| - case TPGS_STATE_STANDBY: |
705 |
| - case TPGS_STATE_UNAVAILABLE: |
| 696 | + case SCSI_ACCESS_STATE_STANDBY: |
| 697 | + case SCSI_ACCESS_STATE_UNAVAILABLE: |
706 | 698 | break;
|
707 |
| - case TPGS_STATE_OFFLINE: |
| 699 | + case SCSI_ACCESS_STATE_OFFLINE: |
708 | 700 | return SCSI_DH_IO;
|
709 |
| - case TPGS_STATE_TRANSITIONING: |
| 701 | + case SCSI_ACCESS_STATE_TRANSITIONING: |
710 | 702 | break;
|
711 | 703 | default:
|
712 | 704 | sdev_printk(KERN_INFO, sdev,
|
@@ -760,7 +752,7 @@ static void alua_rtpg_work(struct work_struct *work)
|
760 | 752 |
|
761 | 753 | pg->flags &= ~ALUA_PG_RUN_RTPG;
|
762 | 754 | spin_unlock_irqrestore(&pg->lock, flags);
|
763 |
| - if (state == TPGS_STATE_TRANSITIONING) { |
| 755 | + if (state == SCSI_ACCESS_STATE_TRANSITIONING) { |
764 | 756 | if (alua_tur(sdev) == SCSI_DH_RETRY) {
|
765 | 757 | spin_lock_irqsave(&pg->lock, flags);
|
766 | 758 | pg->flags &= ~ALUA_PG_RUNNING;
|
@@ -1006,19 +998,19 @@ static int alua_prep_fn(struct scsi_device *sdev, struct request *req)
|
1006 | 998 | {
|
1007 | 999 | struct alua_dh_data *h = sdev->handler_data;
|
1008 | 1000 | struct alua_port_group __rcu *pg;
|
1009 |
| - int state = TPGS_STATE_OPTIMIZED; |
| 1001 | + unsigned char state = SCSI_ACCESS_STATE_OPTIMAL; |
1010 | 1002 | int ret = BLKPREP_OK;
|
1011 | 1003 |
|
1012 | 1004 | rcu_read_lock();
|
1013 | 1005 | pg = rcu_dereference(h->pg);
|
1014 | 1006 | if (pg)
|
1015 | 1007 | state = pg->state;
|
1016 | 1008 | rcu_read_unlock();
|
1017 |
| - if (state == TPGS_STATE_TRANSITIONING) |
| 1009 | + if (state == SCSI_ACCESS_STATE_TRANSITIONING) |
1018 | 1010 | ret = BLKPREP_DEFER;
|
1019 |
| - else if (state != TPGS_STATE_OPTIMIZED && |
1020 |
| - state != TPGS_STATE_NONOPTIMIZED && |
1021 |
| - state != TPGS_STATE_LBA_DEPENDENT) { |
| 1011 | + else if (state != SCSI_ACCESS_STATE_OPTIMAL && |
| 1012 | + state != SCSI_ACCESS_STATE_ACTIVE && |
| 1013 | + state != SCSI_ACCESS_STATE_LBA) { |
1022 | 1014 | ret = BLKPREP_KILL;
|
1023 | 1015 | req->cmd_flags |= REQ_QUIET;
|
1024 | 1016 | }
|
|
0 commit comments