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!
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:08 UTC