> @@ -2058,6 +2058,24 @@ zfs_ioc_objset_stats_impl(zfs_cmd_t *zc, objset_t *os)
>                       error = zvol_get_stats(os, nv);
>                       if (error == EIO)
>                               return (error);
> +                     /*
> +                      * If the zvol's parent dataset was being destroyed
> +                      * when we called zvol_get_stats, then it's possible
> +                      * that the ZAP still existed but its blocks had
> +                      * been already been freed when we tried to read it.
> +                      * It would then appear that the ZAP had no entries.
> +                      */
> +                     if (error == ENOENT)
> +                             return (error);
> +                     /*
> +                      * a zvol's znode gets created before its zap gets
> +                      * created.  So there is a short window of time in which
> +                      * zvol_get_stats() can return EEXIST.  Return an
> +                      * error in that case

Is it possible that you found (and fixed) this problem before integrating this 
commit, which should also fix it (it introduced the uses of dp_config_rwlock I 
mentioned):

commit 3b2aab18808792cbd248a12f1edf139b89833c13
Author: Matthew Ahrens <[email protected]>
Date:   Thu Feb 28 12:44:05 2013 -0800
    3464 zfs synctask code needs restructuring

---
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/60/files#r50436764
_______________________________________________
developer mailing list
[email protected]
http://lists.open-zfs.org/mailman/listinfo/developer

Reply via email to