Re: zdb patch

From: Pawel Jakub Dawidek <pjd_at_FreeBSD.org>
Date: Sat, 14 Apr 2007 15:46:53 +0200
On Sat, Apr 14, 2007 at 10:31:19PM +0900, Hidetoshi Shimokawa wrote:
> Here is a patch for zdb.
> Now we can 'zdb -u pool' :-)
> 
> ==== //depot/user/simokawa/firewire/contrib/opensolaris/lib/libzpool/common/kernel.c#2 - /home/p4/firewire/contrib/opensolaris/lib/libzpool/common/kernel.c ====
> _at__at_ -38,6 +38,7 _at__at_
>  #include <sys/zfs_context.h>
>  #include <sys/zmod.h>
>  #include <sys/utsname.h>
> +#include <sys/disk.h>
>  
>  /*
>   * Emulation of kernel services in userland.
> _at__at_ -291,7 +292,11 _at__at_
>  
>  	ASSERT(abstime > 0);
>  top:
> +#if 0
>  	delta = abstime - lbolt;
> +#else /* for compatibility with FreeBSD kernel */
> +	delta = abstime;
> +#endif

What is this change for? It works ok without it here.

>  	if (delta <= 0)
>  		return (-1);
>  
> _at__at_ -413,7 +418,11 _at__at_
>  	*vpp = vp = umem_zalloc(sizeof (vnode_t), UMEM_NOFAIL);
>  
>  	vp->v_fd = fd;
> -	vp->v_size = st.st_size;
> +	if (st.st_mode & S_IFCHR) {
> +		ioctl(fd, DIOCGMEDIASIZE, &vp->v_size);
> +	} else {
> +		vp->v_size = st.st_size;
> +	}
>  	vp->v_path = spa_strdup(path);
>  
>  	return (0);

Please commit, but:
1. Move 'include <sys/disk.h>' to lib/libzpool/common/sys/zfs_context.h
2. Use S_ISCHR() macro and drop { }:

	if (S_ISCHR(st.st_mode))
		ioctl(fd, DIOCGMEDIASIZE, &vp->v_size);
	else
		vp->v_size = st.st_size;

Thanks!

-- 
Pawel Jakub Dawidek                       http://www.wheel.pl
pjd_at_FreeBSD.org                           http://www.FreeBSD.org
FreeBSD committer                         Am I Evil? Yes, I Am!

Received on Sat Apr 14 2007 - 11:47:16 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:08 UTC