Mercurial > illumos > illumos-gate
changeset 14076:fa08ad0765cf
3878 blkdev needs to support DKIOCGMEDIAINFOEXT
Reviewed by: Saso Kiselkov <skiselkov.ml@gmail.com>
Reviewed by: Garrett D'Amore <garrett@damore.org>
Approved by: Garrett D'Amore <garrett@damore.org>
author | Dan McDonald <danmcd@nexenta.com> |
---|---|
date | Wed, 10 Jul 2013 10:58:14 -0400 |
parents | f73fc37ec88d |
children | 47f42be153c1 |
files | usr/src/uts/common/io/blkdev/blkdev.c |
diffstat | 1 files changed, 18 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/uts/common/io/blkdev/blkdev.c Mon Jul 08 08:57:02 2013 -0800 +++ b/usr/src/uts/common/io/blkdev/blkdev.c Wed Jul 10 10:58:14 2013 -0400 @@ -20,9 +20,9 @@ */ /* * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright 2012 Nexenta Systems, Inc. All rights reserved. * Copyright 2012 Garrett D'Amore <garrett@damore.org>. All rights reserved. * Copyright 2012 Alexey Zaytsev <alexey.zaytsev@gmail.com> All rights reserved. + * Copyright 2013 Nexenta Systems, Inc. All rights reserved. */ #include <sys/types.h> @@ -1051,7 +1051,22 @@ minfo.dki_media_type = DK_FIXED_DISK; minfo.dki_lbsize = (1U << bd->d_blkshift); minfo.dki_capacity = bd->d_numblks; - if (ddi_copyout(&minfo, ptr, sizeof (minfo), flag)) { + if (ddi_copyout(&minfo, ptr, sizeof (minfo), flag)) { + return (EFAULT); + } + return (0); + } + case DKIOCGMEDIAINFOEXT: { + struct dk_minfo_ext miext; + + /* make sure our state information is current */ + bd_update_state(bd); + bzero(&miext, sizeof (miext)); + miext.dki_media_type = DK_FIXED_DISK; + miext.dki_lbsize = (1U << bd->d_blkshift); + miext.dki_pbsize = miext.dki_lbsize; + miext.dki_capacity = bd->d_numblks; + if (ddi_copyout(&miext, ptr, sizeof (miext), flag)) { return (EFAULT); } return (0); @@ -1074,7 +1089,7 @@ cinfo.dki_space = 0; cinfo.dki_prio = 0; cinfo.dki_vec = 0; - if (ddi_copyout(&cinfo, ptr, sizeof (cinfo), flag)) { + if (ddi_copyout(&cinfo, ptr, sizeof (cinfo), flag)) { return (EFAULT); } return (0);