static qid_t get_qid(struct ext2_inode *inode, int qtype) { switch (qtype) { case USRQUOTA: return inode_uid(*inode); case GRPQUOTA: return inode_gid(*inode); default: log_err("Invalid quota type: %d", qtype); BUG_ON(1); } }
static inline qid_t get_qid(struct ext2_inode_large *inode, enum quota_type qtype) { unsigned int inode_size; switch (qtype) { case USRQUOTA: return inode_uid(*inode); case GRPQUOTA: return inode_gid(*inode); case PRJQUOTA: inode_size = EXT2_GOOD_OLD_INODE_SIZE + inode->i_extra_isize; if (inode_includes(inode_size, i_projid)) return inode_projid(*inode); default: return 0; } return 0; }
/* * This function expands '%IX' expressions */ static _INLINE_ void expand_inode_expression(FILE *f, ext2_filsys fs, char ch, struct problem_context *ctx) { struct ext2_inode *inode; struct ext2_inode_large *large_inode; if (!ctx || !ctx->inode) goto no_inode; inode = ctx->inode; large_inode = (struct ext2_inode_large *) inode; switch (ch) { case 's': if (LINUX_S_ISDIR(inode->i_mode)) fprintf(f, "%u", inode->i_size); else { #ifdef EXT2_NO_64_TYPE if (inode->i_size_high) fprintf(f, "0x%x%08x", inode->i_size_high, inode->i_size); else fprintf(f, "%u", inode->i_size); #else fprintf(f, "%llu", EXT2_I_SIZE(inode)); #endif } break; case 'S': fprintf(f, "%u", large_inode->i_extra_isize); break; case 'b': if (ext2fs_has_feature_huge_file(fs->super)) fprintf(f, "%llu", inode->i_blocks + (((long long) inode->osd2.linux2.l_i_blocks_hi) << 32)); else fprintf(f, "%u", inode->i_blocks); break; case 'l': fprintf(f, "%d", inode->i_links_count); break; case 'm': fprintf(f, "0%o", inode->i_mode); break; case 'M': print_time(f, inode->i_mtime); break; case 'F': fprintf(f, "%u", inode->i_faddr); break; case 'f': fprintf(f, "%llu", ext2fs_file_acl_block(fs, inode)); break; case 'd': fprintf(f, "%u", (LINUX_S_ISDIR(inode->i_mode) ? inode->i_dir_acl : 0)); break; case 'u': fprintf(f, "%d", inode_uid(*inode)); break; case 'g': fprintf(f, "%d", inode_gid(*inode)); break; case 't': if (LINUX_S_ISREG(inode->i_mode)) fputs(_("regular file"), f); else if (LINUX_S_ISDIR(inode->i_mode)) fputs(_("directory"), f); else if (LINUX_S_ISCHR(inode->i_mode)) fputs(_("character device"), f); else if (LINUX_S_ISBLK(inode->i_mode)) fputs(_("block device"), f); else if (LINUX_S_ISFIFO(inode->i_mode)) fputs(_("named pipe"), f); else if (LINUX_S_ISLNK(inode->i_mode)) fputs(_("symbolic link"), f); else if (LINUX_S_ISSOCK(inode->i_mode)) fputs(_("socket"), f); else fprintf(f, _("unknown file type with mode 0%o"), inode->i_mode); break; default: no_inode: fprintf(f, "%%I%c", ch); break; } }
/* * This function expands '%IX' expressions */ static _INLINE_ void expand_inode_expression(char ch, struct problem_context *ctx) { struct ext2_inode *inode; struct ext2_inode_large *large_inode; const char * time_str; time_t t; int do_gmt = -1; if (!ctx || !ctx->inode) goto no_inode; inode = ctx->inode; large_inode = (struct ext2_inode_large *) inode; switch (ch) { case 's': if (LINUX_S_ISDIR(inode->i_mode)) printf("%u", inode->i_size); else { #ifdef EXT2_NO_64_TYPE if (inode->i_size_high) printf("0x%x%08x", inode->i_size_high, inode->i_size); else printf("%u", inode->i_size); #else printf("%llu", inode->i_size | ((long long)inode->i_size_high << 32)); #endif } break; case 'S': printf("%u", large_inode->i_extra_isize); break; case 'b': printf("%u", inode->i_blocks); break; case 'l': printf("%d", inode->i_links_count); break; case 'm': printf("0%o", inode->i_mode); break; case 'M': /* The diet libc doesn't respect the TZ environemnt variable */ if (do_gmt == -1) { time_str = getenv("TZ"); if (!time_str) time_str = ""; do_gmt = !strcmp(time_str, "GMT"); } t = inode->i_mtime; time_str = asctime(do_gmt ? gmtime(&t) : localtime(&t)); printf("%.24s", time_str); break; case 'F': printf("%u", inode->i_faddr); break; case 'f': printf("%u", inode->i_file_acl); break; case 'd': printf("%u", (LINUX_S_ISDIR(inode->i_mode) ? inode->i_dir_acl : 0)); break; case 'u': printf("%d", inode_uid(*inode)); break; case 'g': printf("%d", inode_gid(*inode)); break; case 't': if (LINUX_S_ISREG(inode->i_mode)) printf(_("regular file")); else if (LINUX_S_ISDIR(inode->i_mode)) printf(_("directory")); else if (LINUX_S_ISCHR(inode->i_mode)) printf(_("character device")); else if (LINUX_S_ISBLK(inode->i_mode)) printf(_("block device")); else if (LINUX_S_ISFIFO(inode->i_mode)) printf(_("named pipe")); else if (LINUX_S_ISLNK(inode->i_mode)) printf(_("symbolic link")); else if (LINUX_S_ISSOCK(inode->i_mode)) printf(_("socket")); else printf(_("unknown file type with mode 0%o"), inode->i_mode); break; default: no_inode: printf("%%I%c", ch); break; } }
static inline qid_t get_qid(struct ext2_inode *inode, int qtype) { if (qtype == USRQUOTA) return inode_uid(*inode); return inode_gid(*inode); }