From owner-freebsd-current@FreeBSD.ORG Tue Oct 20 00:41:02 2009 Return-Path: Delivered-To: current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B4A09106566B for ; Tue, 20 Oct 2009 00:41:02 +0000 (UTC) (envelope-from thompsa@FreeBSD.org) Received: from pele.citylink.co.nz (pele.citylink.co.nz [202.8.44.226]) by mx1.freebsd.org (Postfix) with ESMTP id 7B8038FC1B for ; Tue, 20 Oct 2009 00:41:02 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by pele.citylink.co.nz (Postfix) with ESMTP id 34326FF3B for ; Tue, 20 Oct 2009 13:41:01 +1300 (NZDT) X-Virus-Scanned: Debian amavisd-new at citylink.co.nz Received: from pele.citylink.co.nz ([127.0.0.1]) by localhost (pele.citylink.co.nz [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wrAtna5G-vyI for ; Tue, 20 Oct 2009 13:40:56 +1300 (NZDT) Received: from citylink.fud.org.nz (unknown [202.8.44.45]) by pele.citylink.co.nz (Postfix) with ESMTP for ; Tue, 20 Oct 2009 13:40:56 +1300 (NZDT) Received: by citylink.fud.org.nz (Postfix, from userid 1001) id 196FA11475; Tue, 20 Oct 2009 13:40:56 +1300 (NZDT) Date: Tue, 20 Oct 2009 13:40:55 +1300 From: Andrew Thompson To: current@freebsd.org Message-ID: <20091020004055.GA29858@citylink.fud.org.nz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.17 (2007-11-01) Cc: Subject: CAM problem X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Oct 2009 00:41:02 -0000 Hi, I have a cam problem that is noticeable with usb devices. It relates to the ordering of xpt_release_device() and the CAM_DEV_UNCONFIGURED flag when yanking a device that has stalled. This then causes a problem with the usb explore thread which will end up waiting on simfree forever, blocking any further usb attach/detach on the controller. Hopefully my printfs can show the problem. I have replaced the pointers returned from xpt_alloc_device() with pretty names, is the one in question. ugen1.3: at usbus1 umass0: on usbus1 umass0: SCSI over Bulk-Only; quirks = 0x0000 umass-sim0: ref 1++ xpt_find_bus: ref=1 -> 2 xpt_alloc_target: ref=2 -> 3 xpt_alloc_device: device = dev1 xpt_release_device dev1 OK xpt_release_target: xpt_release_bus xpt_release_bus: ref=3 -> 2 xpt_release_path: xpt_release_bus xpt_release_bus: ref=2 -> 1 umass0:0:0:-1: Attached to scbus0 xpt_find_bus: ref=1 -> 2 xpt_alloc_target: ref=2 -> 3 xpt_alloc_device: device = dev2 xpt_find_bus: ref=3 -> 4 xpt_alloc_target: ref=4 -> 5 xpt_alloc_device: device = dev3 xpt_find_bus: ref=5 -> 6 xpt_release_device dev3 failed, ref=1 unconf=1 xpt_release_path: xpt_release_bus xpt_release_bus: ref=6 -> 5 xpt_find_bus: ref=5 -> 6 probedone: clr dev dev3 unconfigured <...unplug...> ugen1.3: at usbus1 (disconnected) umass0: at uhub2, port 1, addr 3 (disconnected) umass_detach: usb_cam_action, device GONE usb_cam_action, device GONE usb_cam_action, device GONE xpt_find_bus: ref=6 -> 7 usb_cam_action, device GONE usb_cam_action, device GONE xpt_release_device dev3 failed, ref=3 unconf=0 xpt_release_path: xpt_release_bus xpt_release_bus: ref=7 -> 6 (da0:umass-sim0:0:0:0): got CAM status 0x39 (da0:umass-sim0:0:0:0): fatal error, failed to attach to device (da0:umass-sim0:0:0:0): lost device (da0:umass-sim0:0:0:0): removing device entry ^^^ USB disk had stalled on attach xpt_release_device dev3 failed, ref=1 unconf=0 xpt_release_path: xpt_release_bus xpt_release_bus: ref=6 -> 5 xpt_release_device dev3 failed, ref=0 unconf=0 ^^^ last reference to dev3 dropped xpt_release_path: xpt_release_bus xpt_release_bus: ref=5 -> 4 xpt_release_device dev2 OK xpt_release_target: xpt_release_bus xpt_release_bus: ref=4 -> 3 xpt_release_path: xpt_release_bus xpt_release_bus: ref=3 -> 2 umass_cam_detach_sim: calling xpt_bus_deregister xpt_find_bus: ref=2 -> 3 xpt_alloc_target: ref=3 -> 4 xpt_alloc_device: device = dev4 scsi_dev_async: set dev dev3 unconfigured ^^^ dev3 gets the CAM_DEV_UNCONFIGURED flag cleared here xpt_bus_deregister: xpt_release_bus xpt_release_bus: ref=4 -> 3 xpt_release_device dev4 OK xpt_release_target: xpt_release_bus xpt_release_bus: ref=3 -> 2 xpt_release_path: xpt_release_bus xpt_release_bus: ref=2 -> 1 umass_cam_detach_sim: umass-sim0: waiting... ref = 1 ^^^ wait on "simfree" forever.