Date: Sat, 3 Jul 1999 11:35:55 -0700 (PDT) From: Matthew Jacob <mjacob@feral.com> To: Nick Hibma <hibma@skylink.it> Cc: FreeBSD CURRENT Mailing list <current@FreeBSD.ORG>, justin@FreeBSD.ORG Subject: Re: panic in dadone, PR 12041 Message-ID: <Pine.BSF.4.05.9907031133310.5047-100000@semuta.feral.com> In-Reply-To: <Pine.BSF.3.96.990703091751.7798A-200000@heidi.plazza.it>
next in thread | previous in thread | raw e-mail | index | archive | help
I'll fix it, but not this way. It's time to prepare for handling larger than terabyte disks that still have a 512 byte sector size as well. The actual calculation should be: (((u_int64_t) dp->secsize) * ((u_int64_t) dp->sectors)) >> 20LL and the format statement should be %qdMB for the Megabyte size. On Sat, 3 Jul 1999, Nick Hibma wrote: > > PR 12041 complains about the fact that the system panics with a divide > by zero if a zip drive is connected with a medium in it. I've not been > able to reproduce the problem, but remember having similar problems > when implementing the umass driver for USB. The problem is caused by the > following line in scsi_da.c:1326 (3.2-STABLE but applies to CURRENT as > well): > > snprintf(announce_buf, sizeof(announce_buf), > "%ldMB (%d %d byte sectors: %dH %dS/T%dC)", > dp->sectors / ((1024L * 1024L) / dp->secsize), > dp->sectors, dp->secsize, dp->heads, > dp->secs_per_track, dp->cylinders); > > secsize is 0 in some cases (I think it happens when an INQUIRY fails > without being detected as having failed). > > In any case a/(b/c) = a*c/b, but without any divl (with b sometimes 0 > and c == 2^20). > > Patch attached. > > Nick > > -- > e-Mail: hibma@skylink.it > > To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.05.9907031133310.5047-100000>