On Thu, Apr 14, 2016 at 04:45:11PM +0800, Anand Jain wrote:
> 
> 
> 
> Thanks for the report ! more below..
> 
> 
>  You may use simpler devmgt tool, https://github.com/asj/devmgt

Thanks, will try.

> 
>  You are failing the replace-target, presumably when the replace is
>  still running, however note that this patch-set does not fail the
>  replace-target for errors (as of now I have no idea how to do that
>  without leading to a messy situation), and so it would follow the
>  original code as without this patch.
>  Next, originally with-out this patch-set we won't close any device
>  for errors. So when you delete the device at the block-layer and
>  re-attach (scan) most probably you are having a newer device path
>  to the block device. (which kind of defeats the idea of testing
>  an intermittently disappearing device), so I doubt, if the test
>  case is reliable,  and above panic is btrfs related and if its
>  this patch-set related.

No, It is fixed by my latest patch (about of s_bdev field in
superblock). Actual sequence which leads to oops is:
1) FS is mounted, s_bdev is NULL
2) failed device is closed, s_bdev untouched
3) missing device is replaced, s_bdev is set to non-NULL – bdev of
the replaced device
4) at second device closing, s_bdev is "changed" to first device from
the device list but it is... some device because closed dev still
didn't delete from the list!
5) after device closing, s_bdev points to invalid bdev.
6) umount -> sync_filesystem() -> sync_blokdev(s_bdev) -> OOPS.


-- 
Yauhen Kharuzhy
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to