1 /* 2 * Copyright (c) 2013 The DragonFly Project. All rights reserved. 3 * 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in 13 * the documentation and/or other materials provided with the 14 * distribution. 15 * 3. Neither the name of The DragonFly Project nor the names of its 16 * contributors may be used to endorse or promote products derived 17 * from this software without specific, prior written permission. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 22 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 23 * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 24 * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, 25 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 26 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 27 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 29 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30 * SUCH DAMAGE. 31 */ 32 33 #include "hammer2.h" 34 35 void 36 print_inode(char* inode_string) 37 { 38 printf("Printing the inode's contents of directory/file %s\n", inode_string); 39 int fd = hammer2_ioctl_handle(inode_string); 40 if (fd != -1) { 41 hammer2_ioc_inode_t inode; 42 int res = ioctl(fd, HAMMER2IOC_INODE_GET, &inode); 43 hammer2_inode_data_t inode_data; 44 inode_data = inode.ip_data; 45 printf("Got res = %d\n", res); 46 printf("Printing inode data.\n"); 47 /*printf("version = %d\n", inode_data.version); 48 printf("uflags = %d\n", inode_data.uflags); 49 printf("rmajor = %d\n", inode_data.rmajor); 50 printf("rminor = %d\n", inode_data.rminor); 51 printf("ctime = %u !\n", (unsigned int)inode_data.ctime); 52 printf("mtime = %u !\n", (unsigned int)inode_data.mtime);*/ 53 printf("type = %d\n", inode_data.type); 54 printf("op_flags = %d\n", inode_data.op_flags); 55 /*printf("cap_flags = %d\n", inode_data.cap_flags); 56 printf("mode = %d\n", inode_data.mode); 57 printf("inum = %u !\n", (unsigned int)inode_data.inum); 58 printf("size = %u !\n", (unsigned int)inode_data.size),*/ 59 printf("name_key = %u !\n", (unsigned int)inode_data.name_key); 60 /*printf("name_len = %d\n", inode_data.name_len); 61 printf("ncopies = %d\n", inode_data.ncopies);*/ 62 printf("comp_algo = %d\n", inode_data.comp_algo); 63 if (inode_data.op_flags != HAMMER2_OPFLAG_DIRECTDATA) { 64 int i; 65 for (i = 0; i < HAMMER2_SET_COUNT; ++i) { 66 if (inode_data.u.blockset.blockref[i].type != HAMMER2_BREF_TYPE_EMPTY) { 67 printf("blockrefs %d type = %d\n", i, inode_data.u.blockset.blockref[i].type); 68 printf("blockrefs %d methods = %d\n", i, inode_data.u.blockset.blockref[i].methods); 69 printf("blockrefs %d copyid = %d\n", i, inode_data.u.blockset.blockref[i].copyid); 70 printf("blockrefs %d flags = %d\n", i, inode_data.u.blockset.blockref[i].flags); 71 printf("blockrefs %d key = %u !\n", i, (unsigned int)inode_data.u.blockset.blockref[i].key); 72 } 73 else 74 printf("blockrefs %d is empty.\n", i); 75 } 76 } 77 else { 78 printf("This inode has data instead of blockrefs.\n"); 79 } 80 } 81 } 82