Project

General

Profile

Bug #9737

ix-smartd Areca ARC-1880 fails

Added by Marcel Reef over 5 years ago. Updated about 4 years ago.

Status:
Resolved
Priority:
Important
Assignee:
Xin Li
Category:
OS
Target version:
Severity:
New
Reason for Closing:
Reason for Blocked:
Needs QA:
Yes
Needs Doc:
Yes
Needs Merging:
Yes
Needs Automation:
No
Support Suite Ticket:
n/a
Hardware Configuration:
ChangeLog Required:
No

Description

The generated prop_dev (/dev/arcmsr0 -d areca,1) in ix-smartd for the Areca ARC-1880 (with existing /dev/arcmsr0 device), fails with:
Standard Inquiry (36 bytes) failed [Input/output error]
Retrying with a 64 byte Standard Inquiry
Standard Inquiry (64 bytes) failed [Input/output error]
A mandatory SMART command failed: exiting. To continue, add one or more '-T permissive' options.

I have tried older versions, but the same is with all releases of FreeNAS STABLE this year.
I have the latest firmware 1.52 with JBOD enabled, to no avail. When using /dev/da0 as prop_dev smartd will succeed.
So it seems not all Areca cards/firmware version supports direct access through /dev/arcmsr*.

To fix this (and most other compatibility problems with non-common devices), I would suggest to change the parse_devlist() function, with a fallback mechanism like:
parse_devlist() {
disk=$1

local IFS="|" 
while read DRIVER CONTROLLER_ID CHANNEL_NO LUN_ID DEVICE; do
case ${DEVICE}:${DRIVER} in # Areca Controller support(at least the 12xx family, possibly others)
${disk}:arcmsr*)
DEVID=$(($LUN_ID+1+($CHANNEL_NO*8)))
propdev="/dev/arcmsr${CONTROLLER_ID} -d areca,${DEVID}"
break
;; # Highpoint Rocket Raid 27xx controller
${disk}:rr274x_3x)
CONTROLLER_ID=$(($CONTROLLER_ID+1))
CHANNEL_NO=$(($CHANNEL_NO+1))
if [ $CHANNEL_NO -gt 16 ]; then
CHANNEL_NO=$(($CHANNEL_NO-16))
elif [ $CHANNEL_NO -gt 8 ]; then
CHANNEL_NO=$(($CHANNEL_NO-8))
fi
propdev="/dev/${DRIVER} -d hpt,${CONTROLLER_ID}/${CHANNEL_NO}"
break
;; # Highpoint Rocket Raid controller
${disk}:hpt*)
CONTROLLER_ID=$(($CONTROLLER_ID+1))
CHANNEL_NO=$(($CHANNEL_NO+1))
propdev="/dev/${DRIVER} -d hpt,${CONTROLLER_ID}/${CHANNEL_NO}"
break
;; # HP Smart Array Controller
${disk}:ciss*)
propdev="/dev/${DRIVER}${CONTROLLER_ID} -d cciss,${CHANNEL_NO}"
break
;; # 3ware controller
${disk}:twa*)
port=`/usr/local/sbin/tw_cli /c${CONTROLLER_ID}/u${CHANNEL_NO} show | egrep "^u" | sed -E 's/.*p([0-9]+).*/\1/'`
propdev="/dev/${DRIVER}${CONTROLLER_ID} -d 3ware,${port}"
break
;; # Common device
${disk}:* )
propdev=/dev/$disk
break
;;
esac
done
if ! /usr/local/sbin/smartctl -i ${propdev} | egrep -i "^.*SMART.*abled" > /dev/null 2>&1; then
propdev=/dev/$disk
fi
echo -n $propdev
}

Related issues

Related to FreeNAS - Feature #10458: SMART support for ARECA controllers in JBOD modeClosed: Duplicate2015-07-04

Associated revisions

Revision 0f217274 (diff)
Added by Xin Li over 5 years ago

Check if SMART can be used for specified device before adding them to the configuration file. Submitted by: Marcel Reef Ticket: #9737

Revision 0cb7c29c (diff)
Added by Xin Li over 5 years ago

Check if SMART can be used for specified device before adding them to the configuration file. Submitted by: Marcel Reef Ticket: #9737 (cherry picked from commit 0f21727451c2a2dad354babf8c5534ca6e04d244)

Revision 7cfca407 (diff)
Added by Xin Li about 5 years ago

Check if SMART can be used for specified device before adding them to the configuration file. Submitted by: Marcel Reef Ticket: #9737 (cherry picked from commit 0f21727451c2a2dad354babf8c5534ca6e04d244)

History

#1 Updated by Marcel Reef over 5 years ago

Sorry, first entry, should have used Inline Code formatting for the code-snippet (can't edit original text).

#2 Updated by Jordan Hubbard over 5 years ago

  • Category changed from OS to 76
  • Assignee set to Xin Li
  • Target version set to 49

#3 Updated by Xin Li over 5 years ago

  • Status changed from Unscreened to Screened

#4 Updated by Xin Li over 5 years ago

  • Status changed from Screened to Ready For Release
  • Target version changed from 49 to Unspecified

Marcel Reef wrote:

The generated prop_dev (/dev/arcmsr0 -d areca,1) in ix-smartd for the Areca ARC-1880 (with existing /dev/arcmsr0 device), fails with:
Standard Inquiry (36 bytes) failed [Input/output error]
Retrying with a 64 byte Standard Inquiry
Standard Inquiry (64 bytes) failed [Input/output error]
A mandatory SMART command failed: exiting. To continue, add one or more '-T permissive' options.

I have tried older versions, but the same is with all releases of FreeNAS STABLE this year.
I have the latest firmware 1.52 with JBOD enabled, to no avail. When using /dev/da0 as prop_dev smartd will succeed.
So it seems not all Areca cards/firmware version supports direct access through /dev/arcmsr*.

To fix this (and most other compatibility problems with non-common devices), I would suggest to change the parse_devlist() function, with a fallback mechanism like:
parse_devlist() {
disk=$1

local IFS="|"
while read DRIVER CONTROLLER_ID CHANNEL_NO LUN_ID DEVICE; do
case ${DEVICE}:${DRIVER} in
  1. Areca Controller support(at least the 12xx family, possibly others)
    ${disk}:arcmsr*)
    DEVID=$(($LUN_ID+1+($CHANNEL_NO*8)))
    propdev="/dev/arcmsr${CONTROLLER_ID} -d areca,${DEVID}"
    break
    ;;
  2. Highpoint Rocket Raid 27xx controller
    ${disk}:rr274x_3x)
    CONTROLLER_ID=$(($CONTROLLER_ID+1))
    CHANNEL_NO=$(($CHANNEL_NO+1))
    if [ $CHANNEL_NO -gt 16 ]; then
    CHANNEL_NO=$(($CHANNEL_NO-16))
    elif [ $CHANNEL_NO -gt 8 ]; then
    CHANNEL_NO=$(($CHANNEL_NO-8))
    fi
    propdev="/dev/${DRIVER} -d hpt,${CONTROLLER_ID}/${CHANNEL_NO}"
    break
    ;;
  3. Highpoint Rocket Raid controller
    ${disk}:hpt*)
    CONTROLLER_ID=$(($CONTROLLER_ID+1))
    CHANNEL_NO=$(($CHANNEL_NO+1))
    propdev="/dev/${DRIVER} -d hpt,${CONTROLLER_ID}/${CHANNEL_NO}"
    break
    ;;
  4. HP Smart Array Controller
    ${disk}:ciss*)
    propdev="/dev/${DRIVER}${CONTROLLER_ID} -d cciss,${CHANNEL_NO}"
    break
    ;;
  5. 3ware controller
    ${disk}:twa*)
    port=`/usr/local/sbin/tw_cli /c${CONTROLLER_ID}/u${CHANNEL_NO} show | egrep "^u" | sed -E 's/.*p([0-9]+).*/\1/'`
    propdev="/dev/${DRIVER}${CONTROLLER_ID} -d 3ware,${port}"
    break
    ;;
  6. Common device
    ${disk}:* )
    propdev=/dev/$disk
    break
    ;;
    esac
    done

if ! /usr/local/sbin/smartctl -i ${propdev} | egrep -i "^.*SMART.*abled" > /dev/null 2>&1; then
propdev=/dev/$disk
fi

echo -n $propdev
}

#5 Updated by Jordan Hubbard over 5 years ago

  • ChangeLog Entry updated (diff)

#6 Updated by Jordan Hubbard over 5 years ago

  • Status changed from Ready For Release to Resolved

#7 Updated by Jordan Hubbard about 5 years ago

  • Related to Feature #10458: SMART support for ARECA controllers in JBOD mode added

#8 Updated by Larry Rosenman about 5 years ago

is this in the current (2015-07-04) Stable?

It doesn't seem to pick up the serial #'s of ALL 6 of my disks, nor actually run any SMART tests

FreeNAS-9.3-STABLE-201506292130

#9 Avatar?id=14398&size=24x24 Updated by Kris Moore about 4 years ago

  • Target version changed from Unspecified to N/A

Also available in: Atom PDF