New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
vdev_copy_uberblocks() should use abd_alloc_linear() #6713
Comments
|
Good catch! We do have a test case which exercises 8k uberblocks, |
thegreatgazoo
pushed a commit
to thegreatgazoo/zfs
that referenced
this issue
Oct 4, 2017
The vdev_copy_uberblocks() function should use abd_alloc_linear() to allocate ub_abd, because abd_to_buf(ub_abd)) is used later. Signed-off-by: Isaac Huang <he.huang@intel.com> Closes openzfs#6713
behlendorf
pushed a commit
that referenced
this issue
Oct 6, 2017
The vdev_copy_uberblocks() function should use abd_alloc_linear() to allocate ub_abd, because abd_to_buf(ub_abd)) is used later. Reviewed-by: George Melikov <mail@gmelikov.ru> Reviewed-by: Giuseppe Di Natale <dinatale2@llnl.gov> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Isaac Huang <he.huang@intel.com> Closes #6718 Closes #6713
aerusso
pushed a commit
to aerusso/zfs
that referenced
this issue
Oct 11, 2017
The vdev_copy_uberblocks() function should use abd_alloc_linear() to allocate ub_abd, because abd_to_buf(ub_abd)) is used later. Reviewed-by: George Melikov <mail@gmelikov.ru> Reviewed-by: Giuseppe Di Natale <dinatale2@llnl.gov> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Isaac Huang <he.huang@intel.com> Closes openzfs#6718 Closes openzfs#6713
tonyhutter
pushed a commit
that referenced
this issue
Oct 16, 2017
The vdev_copy_uberblocks() function should use abd_alloc_linear() to allocate ub_abd, because abd_to_buf(ub_abd)) is used later. Reviewed-by: George Melikov <mail@gmelikov.ru> Reviewed-by: Giuseppe Di Natale <dinatale2@llnl.gov> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Isaac Huang <he.huang@intel.com> Closes #6718 Closes #6713
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The vdev_copy_uberblocks() function uses abd_to_buf(ub_abd)) but allocates it with abd_alloc(VDEV_UBERBLOCK_SIZE(vd), B_TRUE):
https://github.com/zfsonlinux/zfs/blob/39f56627ae988d09b4e3803c01c22b2026b2310e/module/zfs/vdev_label.c#L1167
https://github.com/zfsonlinux/zfs/blob/39f56627ae988d09b4e3803c01c22b2026b2310e/module/zfs/vdev_label.c#L1179
When the vd's ashift is high, VDEV_UBERBLOCK_SIZE(vd) can be larger than PAGESIZE, which causes abd_alloc() to return a scattered ABD, which will panic abd_to_buf(ub_abd)).
The text was updated successfully, but these errors were encountered: