xref: /dflybsd-src/usr.bin/fstat/hammer2.c (revision 91ffdfc56308b48600d5b200bd03a4da6ae6e2e4)
14d2f9b07SSascha Wildner /*
24d2f9b07SSascha Wildner  * Copyright (c) 2018 The DragonFly Project.  All rights reserved.
34d2f9b07SSascha Wildner  *
44d2f9b07SSascha Wildner  * Redistribution and use in source and binary forms, with or without
54d2f9b07SSascha Wildner  * modification, are permitted provided that the following conditions
64d2f9b07SSascha Wildner  * are met:
74d2f9b07SSascha Wildner  *
84d2f9b07SSascha Wildner  * 1. Redistributions of source code must retain the above copyright
94d2f9b07SSascha Wildner  *    notice, this list of conditions and the following disclaimer.
104d2f9b07SSascha Wildner  * 2. Redistributions in binary form must reproduce the above copyright
114d2f9b07SSascha Wildner  *    notice, this list of conditions and the following disclaimer in
124d2f9b07SSascha Wildner  *    the documentation and/or other materials provided with the
134d2f9b07SSascha Wildner  *    distribution.
144d2f9b07SSascha Wildner  * 3. Neither the name of The DragonFly Project nor the names of its
154d2f9b07SSascha Wildner  *    contributors may be used to endorse or promote products derived
164d2f9b07SSascha Wildner  *    from this software without specific, prior written permission.
174d2f9b07SSascha Wildner  *
184d2f9b07SSascha Wildner  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
194d2f9b07SSascha Wildner  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
204d2f9b07SSascha Wildner  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
214d2f9b07SSascha Wildner  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
224d2f9b07SSascha Wildner  * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
234d2f9b07SSascha Wildner  * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
244d2f9b07SSascha Wildner  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
254d2f9b07SSascha Wildner  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
264d2f9b07SSascha Wildner  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
274d2f9b07SSascha Wildner  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
284d2f9b07SSascha Wildner  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
294d2f9b07SSascha Wildner  * SUCH DAMAGE.
304d2f9b07SSascha Wildner  */
314d2f9b07SSascha Wildner 
32*91ffdfc5SSascha Wildner #define _KERNEL_STRUCTURES
33*91ffdfc5SSascha Wildner 
344d2f9b07SSascha Wildner #include <sys/param.h>
354d2f9b07SSascha Wildner #include <sys/stat.h>
364d2f9b07SSascha Wildner #include <sys/time.h>
374d2f9b07SSascha Wildner 
384d2f9b07SSascha Wildner #include <kvm.h>
394d2f9b07SSascha Wildner #include <stdio.h>
404d2f9b07SSascha Wildner 
414d2f9b07SSascha Wildner #include <sys/vnode.h>
424d2f9b07SSascha Wildner #include <sys/mount.h>
434d2f9b07SSascha Wildner #include <stddef.h>
444d2f9b07SSascha Wildner #include <vfs/hammer2/hammer2.h>
454d2f9b07SSascha Wildner #include <vfs/hammer2/hammer2_disk.h>
464d2f9b07SSascha Wildner 
474d2f9b07SSascha Wildner #include "fstat.h"
484d2f9b07SSascha Wildner 
494d2f9b07SSascha Wildner int
hammer2_filestat(struct vnode * vp,struct filestat * fsp)504d2f9b07SSascha Wildner hammer2_filestat(struct vnode *vp, struct filestat *fsp)
514d2f9b07SSascha Wildner {
524d2f9b07SSascha Wildner 	struct hammer2_inode ino;
534d2f9b07SSascha Wildner 
544d2f9b07SSascha Wildner 	if (!kread(VTOI(vp), &ino, sizeof(ino))) {
554d2f9b07SSascha Wildner 		dprintf(stderr, "can't read hammer2_inode at %p for pid %d\n",
564d2f9b07SSascha Wildner 		    (void *)VTOI(vp), Pid);
574d2f9b07SSascha Wildner 		return 0;
584d2f9b07SSascha Wildner 	}
594d2f9b07SSascha Wildner 
60a9871e48Szrj 	fsp->fsid = fsp->rdev = fstat_dev2udev(vp->v_rdev);
614d2f9b07SSascha Wildner 	fsp->mode = ino.meta.mode | mtrans(vp->v_type);
624d2f9b07SSascha Wildner 	fsp->fileid = ino.meta.inum;
634d2f9b07SSascha Wildner 	fsp->size = ino.meta.size;
644d2f9b07SSascha Wildner 	return 1;
654d2f9b07SSascha Wildner }
66