User Details
- User Since
- Aug 2 2016, 7:55 PM (426 w, 2 d)
Dec 13 2017
I forgot to add, even with D7179, it seems still be a good idea to ensure that we are not trying to rename a zvol which is still opened somewhere.
I was not aware of D7179, thanks to pointing it. I tried it in some simple case and it seems to work pretty well.
Moving zfsvfs_update_fromname() and zvol_rename_minors() from txg_sync to the ioctl part was something I considered but I was unsure of the result because of the part of the rename still in txg_sync but after a second look it seems fine.
About the race, maybe adding a way to lock a specific zvol by adding something in zvol_state (from zvol.c) and holding the lock on the specific zvol during a zfs_ioc_rename could be enough to fix the issue ? so we won't have concurrent rename on the same zvol ? or am I missing another race here ?
My feeling is that we have now a second obvious deadlock on zfs rename in stable/11 and it would be better to use your patch now with (or maybe even without) a lock on the zvol than what we have now.
Dec 11 2017
Nov 20 2017
Nov 17 2017
Thanks for your comments Allan and Andriy.
Concerning the errno set to 12 (ENOMEM), it's effectively set by the ioctl ZFS_IOC_POOL_STATS which is first called with a too small nvlist.
I'm attaching the conditional watchpoint where it happens.
Nov 15 2017
Nov 14 2017
Now that you point it, yes I missed that part!
It will be difficult for me to test it, do you want that I path ata_da.c anyway ?
Oct 14 2017
Oct 12 2017
Sep 7 2017
I took some time to dig more in the code of arc_adjust()/arc_shrink()/arc_kmem_reap_now() and the pagedaemon/vmmeter and the suggestion of avg seems good.
freemem is actually #define freemem vm_cnt.v_free_count (maybe we can use another stats from vmmeter/pagedaemon to replace the needfree by another define ?)
I have also improved my test to reproduce more easily the issue and removing the needfree variable seems good.
Sep 6 2017
Aug 31 2017
Updating the diff, I forgot to push a typo fix from a repo.
Aug 30 2017
Aug 29 2017
Aug 28 2017
Jun 27 2017
The 'q' in {q:led/locate} is necessary for the json output at least, without that we have : "led":locate instead of "led":"locate"
Fixed bapt and allanjude comments.
I'm keeping .Dd as is because bapt seems to prefer to update it at commit time.
Jun 26 2017
Jun 23 2017
Aug 2 2016
updating with jhb comments