memset(fcp_cmnd, 0, sizeof(struct fcp_cmnd));
 
-       int_to_scsilun(sc_cmd->device->lun,
-                       (struct scsi_lun *) fcp_cmnd->fc_lun);
-
+       int_to_scsilun(sc_cmd->device->lun, &fcp_cmnd->fc_lun);
 
        fcp_cmnd->fc_dl = htonl(io_req->data_xfer_len);
        memcpy(fcp_cmnd->fc_cdb, sc_cmd->cmnd, sc_cmd->cmd_len);
 
        fsp->cdb_cmd.fc_dl = htonl(fsp->data_len);
        fsp->cdb_cmd.fc_flags = fsp->req_flags & ~FCP_CFL_LEN_MASK;
 
-       int_to_scsilun(fsp->cmd->device->lun,
-                      (struct scsi_lun *)fsp->cdb_cmd.fc_lun);
+       int_to_scsilun(fsp->cmd->device->lun, &fsp->cdb_cmd.fc_lun);
        memcpy(fsp->cdb_cmd.fc_cdb, fsp->cmd->cmnd, fsp->cmd->cmd_len);
 
        spin_lock_irqsave(&si->scsi_queue_lock, flags);
 
        fsp->cdb_cmd.fc_dl = htonl(fsp->data_len);
        fsp->cdb_cmd.fc_tm_flags = FCP_TMF_LUN_RESET;
-       int_to_scsilun(lun, (struct scsi_lun *)fsp->cdb_cmd.fc_lun);
+       int_to_scsilun(lun, &fsp->cdb_cmd.fc_lun);
 
        fsp->wait_for_comp = 1;
        init_completion(&fsp->tm_done);
 
                caller, cmd, cmd->sess, cmd->seq, se_cmd);
        pr_debug("%s: cmd %p cdb %p\n",
                caller, cmd, cmd->cdb);
-       pr_debug("%s: cmd %p lun %d\n", caller, cmd, cmd->lun);
 
        pr_debug("%s: cmd %p data_nents %u len %u se_cmd_flags <0x%x>\n",
                caller, cmd, se_cmd->t_data_nents,
 
        switch (fcp->fc_tm_flags) {
        case FCP_TMF_LUN_RESET:
-               cmd->lun = scsilun_to_int((struct scsi_lun *)fcp->fc_lun);
-               if (transport_lookup_tmr_lun(&cmd->se_cmd, cmd->lun) < 0) {
+               if (transport_lookup_tmr_lun(&cmd->se_cmd, scsilun_to_int(&fcp->fc_lun)) < 0) {
                        /*
                         * Make sure to clean up newly allocated TMR request
                         * since "unable to  handle TMR request because failed
                         */
                        pr_debug("Failed to get LUN for TMR func %d, "
                                  "se_cmd %p, unpacked_lun %d\n",
-                                 tm_func, &cmd->se_cmd, cmd->lun);
+                                 tm_func, &cmd->se_cmd, scsilun_to_int(&fcp->fc_lun));
                        ft_dump_cmd(cmd, __func__);
                        sess = cmd->sess;
                        transport_send_check_condition_and_sense(&cmd->se_cmd,
                return;
        }
        fc_seq_exch(cmd->seq)->lp->tt.seq_set_resp(cmd->seq, ft_recv_seq, cmd);
-       cmd->lun = scsilun_to_int((struct scsi_lun *)fcp->fc_lun);
        /*
         * Use a single se_cmd->cmd_kref as we expect to release se_cmd
         * directly from ft_check_stop_free callback in response path.
         */
        target_submit_cmd(&cmd->se_cmd, cmd->sess->se_sess, cmd->cdb,
-                               &cmd->ft_sense_buffer[0], cmd->lun, data_len,
-                               task_attr, data_dir, 0);
+                       &cmd->ft_sense_buffer[0], scsilun_to_int(&fcp->fc_lun),
+                       data_len, task_attr, data_dir, 0);
        pr_debug("r_ctl %x alloc target_submit_cmd\n", fh->fh_r_ctl);
        return;
 
 
 #ifndef _FC_FCP_H_
 #define        _FC_FCP_H_
 
+#include <scsi/scsi.h>
+
 /*
  * Fibre Channel Protocol for SCSI.
  * From T10 FCP-3, T10 project 1560-D Rev 4, Sept. 13, 2005.
  * FCP_CMND IU Payload.
  */
 struct fcp_cmnd {
-       __u8            fc_lun[8];      /* logical unit number */
+       struct scsi_lun fc_lun;         /* logical unit number */
        __u8            fc_cmdref;      /* command reference number */
        __u8            fc_pri_ta;      /* priority and task attribute */
        __u8            fc_tm_flags;    /* task management flags */
 #define        FCP_CMND_LEN    32      /* expected length of structure */
 
 struct fcp_cmnd32 {
-       __u8            fc_lun[8];      /* logical unit number */
+       struct scsi_lun fc_lun;         /* logical unit number */
        __u8            fc_cmdref;      /* command reference number */
        __u8            fc_pri_ta;      /* priority and task attribute */
        __u8            fc_tm_flags;    /* task management flags */