Messages in this thread | | | From | "Aneesh Kumar K.V" <> | Subject | Re: [PATCH] 9p: disconnect channel when PCI device is removed | Date | Mon, 16 Apr 2012 16:29:01 +0530 |
| |
Sasha Levin <levinsasha928@gmail.com> writes:
> On Sun, Apr 15, 2012 at 2:27 PM, Aneesh Kumar K.V > <aneesh.kumar@linux.vnet.ibm.com> wrote: >> Sasha Levin <levinsasha928@gmail.com> writes: >> >>> When a virtio_9p pci device is being removed, we should close down any >>> active channels and free up resources, we're not supposed to BUG() if there's >>> still an open channel since it's a valid case when removing the PCI device. >>> >>> Otherwise, removing the PCI device with an open channel would cause the >>> following BUG(): >>> >> ... >> >>> diff --git a/net/9p/trans_virtio.c b/net/9p/trans_virtio.c >>> index 3d43206..5af18d1 100644 >>> --- a/net/9p/trans_virtio.c >>> +++ b/net/9p/trans_virtio.c >>> @@ -615,7 +615,8 @@ static void p9_virtio_remove(struct virtio_device *vdev) >>> { >>> struct virtio_chan *chan = vdev->priv; >>> >>> - BUG_ON(chan->inuse); >>> + if (chan->inuse) >>> + p9_virtio_close(chan->client); >>> vdev->config->del_vqs(vdev); >>> >>> mutex_lock(&virtio_9p_lock); >> >> But an umount should have resulted in p9_virtio_close ? How are you >> removing the device ? Are you removing the device with file system >> mounted ?. In that case may be we should return EBUSY ? > > I signal the underlying PCI device to remove (echo 1 > > /sys/devices/pci0000\:00/[...]/remove), we can't really prevent that > thing so we must clean up ourselves.
What does that mean for the mounted file system ? What would happen to the pending fs operations in that case ?
-aneesh
-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |