Dell H310, JBOD mode "hard error"
Doug Ambrisko
ambrisko at ambrisko.com
Wed Aug 14 15:33:37 UTC 2013
On Wed, Aug 14, 2013 at 04:16:23PM +0100, Steven Hartland wrote:
|
| ----- Original Message -----
| From: "Doug Ambrisko" <ambrisko at ambrisko.com>
| To: <sbruno at freebsd.org>
| Cc: <FreeBSD-scsi at freebsd.org>
| Sent: Wednesday, August 14, 2013 4:03 PM
| Subject: Re: Dell H310, JBOD mode "hard error"
|
|
| >On Tue, Aug 13, 2013 at 07:46:56PM -0700, Sean Bruno wrote:
| >| On Sun, 2013-07-14 at 10:23 -0700, Sean Bruno wrote:
| >| > Not sure what to make of this. I've tested a lot of svn revisions of
| >| > the thunderbolt code, but nothing looks obvious.
| >| >
| >| > When I use a single drive in "SYSPD" mode on a Dell H310 (falcon or
| >| > skinny drake) I get a /dev/mfisyspd0 device. The JBOD mode *seems* to
| >| > work just fine as long as I don't do multiple things at once to it,
| >e.g.
| >| > single user fsck works, but multiuser things die.
| >| >
| >| > I get a failure case that emits errors such as:
| >| >
| >| > g_vfs_done():error 27 in callback
| >| > mfisyspd0p2[READ(offset=7176192, length=425984)]mfisyspd0: hard error
| >| > error = 5
| >| > cmd=read 15360-16383
| >| > error 27 in callback
| >| > g_vfs_done():mfisyspd0: hard error mfisyspd0p2[READ(offset=7602176,
| >| > length=524288)]cmd=read error = 5
| >| > 16384-17407
| >| > error 27 in callback
| >| > g_vfs_done():mfisyspd0: hard error mfisyspd0p2[READ(offset=8126464,
| >| > length=524288)]cmd=read error = 5
| >| > 14560-15359
| >| > error 27 in callback
| >| > g_vfs_done():mfisyspd0: hard error mfisyspd0p2[READ(offset=7192576,
| >| > length=409600)]cmd=read error = 5
| >| > 15360-16383
| >| >
| >| >
| >| > Sean
| >|
| >| Ah, I see something that Yahoo! does that FreeBSD does not finally. We
| >| tune MAXPHYS *up* to (512 * 1024) because of performance and available
| >| memory.
| >|
| >| mfi(4) set's its own (MFI_MAXPHYS) to (128 * 1024) instead of using the
| >| value from sys/param.h (btw, I don't quite get why, but whatever).
| >|
| >| Without a min() check in mfi_syspd.c that mimics the one in mfi_disk.c,
| >| Yahoo code falls over in "SYSPD" mode (mfi(4) real jbod mode).
| >|
| >| Patch:
| >|
| >| Index: mfi_syspd.c
| >| ===================================================================
| >| --- mfi_syspd.c (revision 254313)
| >| +++ mfi_syspd.c (working copy)
| >| @@ -128,7 +128,9 @@
| >| sc->pd_disk->d_drv1 = sc;
| >| sc->pd_disk->d_maxsize = sc->pd_controller->mfi_max_io * secsize;
| >| sc->pd_disk->d_name = "mfisyspd";
| >| - sc->pd_disk->d_open = mfi_syspd_open;
| >| + sc->pd_disk->d_maxsize = min(sc->pd_controller->mfi_max_io * secsize,
| >| + (sc->pd_controller->mfi_max_sge - 1) * PAGE_SIZE);
| >| +
| >| sc->pd_disk->d_close = mfi_syspd_close;
| >| sc->pd_disk->d_strategy = mfi_syspd_strategy;
| >| sc->pd_disk->d_dump = mfi_syspd_dump;
| >
| >
| >That change for d_maxsize looks okay but do you really want to get
| >rid of d_open? I assume this is a cut-n-paste type error and the patch
| >(hand editted) should be:
| >
| >Index: mfi_syspd.c
| >===================================================================
| >--- mfi_syspd.c (revision 254313)
| >+++ mfi_syspd.c (working copy)
| >@@ -128,7 +128,8 @@
| > sc->pd_disk->d_drv1 = sc;
| >- sc->pd_disk->d_maxsize = sc->pd_controller->mfi_max_io * secsize;
| >+ sc->pd_disk->d_maxsize = min(sc->pd_controller->mfi_max_io * secsize,
| >+ (sc->pd_controller->mfi_max_sge - 1) * PAGE_SIZE);
| > sc->pd_disk->d_name = "mfisyspd";
| >sc->pd_disk->d_open = mfi_syspd_open;
| > sc->pd_disk->d_close = mfi_syspd_close;
| > sc->pd_disk->d_strategy = mfi_syspd_strategy;
| > sc->pd_disk->d_dump = mfi_syspd_dump;
| >
| >BTW, has mfiutil been updated to create real JBODs versus the RAID per
| >drive? I know someone was talking about doing that. A note on
| >implementing
| >it, it also requires JBOD to be enabled in the controller. I'm not sure
| >if all controllers support it. I forget when I was playing with it. I've
| >always wondering if we should change the name for the syspd disk node
| >but I left it for compatibility with LSI. We could do an alias. It is
| >good in away that it doesn't create /dev/mfid* nodes so that it is easier
| >to track bugs.
|
| Some do support native JBOD, some require an additional controller level
| setting, and some simply don't support it and I'm not aware of an easy way
| to determine which is the case I'm afraid.
It can be figured out via MegaCli. I remember MegaaCli can set it.
I think it can find out if the controller supports it. MegaCli was
more powerful then the POST tool since with I was able to have both
JBODs and RAID volumes on the same controller. I recall some of the
POST tools prevented that. I also need to play around with CacheCade
more and how to set that up. Again, I was able to do via MegaCli
except for the license activation. However, at the time with the
version of CacheCade that was in the firmware I was using it slowed
things down versus speeding it up. That should be fixed now but I
haven't had time to test it out. I should finally have time to work
on more FreeBSD things since some other issues I've been working on
have been resolved.
| Last time I looked mfiutil used RAID not native JBOD for JBOD's
That's probably the case.
Thanks,
Doug A.
More information about the freebsd-scsi
mailing list