1/* 2 * volume_id - reads filesystem label and uuid 3 * 4 * Copyright (C) 2004 Kay Sievers <kay.sievers@vrfy.org> 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library; if not, write to the Free Software 18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 19 */ 20 21//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_CRAMFS) += cramfs.o 22 23//config: 24//config:config FEATURE_VOLUMEID_CRAMFS 25//config: bool "cramfs filesystem" 26//config: default y 27//config: depends on VOLUMEID 28//config: help 29//config: TODO 30//config: 31 32#include "volume_id_internal.h" 33 34struct cramfs_super { 35 uint32_t magic; 36 uint32_t size; 37 uint32_t flags; 38 uint32_t future; 39 uint8_t signature[16]; 40 struct cramfs_info { 41 uint32_t crc; 42 uint32_t edition; 43 uint32_t blocks; 44 uint32_t files; 45 } PACKED info; 46 uint8_t name[16]; 47} PACKED; 48 49int FAST_FUNC volume_id_probe_cramfs(struct volume_id *id /*,uint64_t off*/) 50{ 51#define off ((uint64_t)0) 52 struct cramfs_super *cs; 53 54 dbg("probing at offset 0x%llx", (unsigned long long) off); 55 56 cs = volume_id_get_buffer(id, off, 0x200); 57 if (cs == NULL) 58 return -1; 59 60 if (cs->magic == cpu_to_be32(0x453dcd28)) { 61// volume_id_set_label_raw(id, cs->name, 16); 62 volume_id_set_label_string(id, cs->name, 16); 63 64// volume_id_set_usage(id, VOLUME_ID_FILESYSTEM); 65 IF_FEATURE_BLKID_TYPE(id->type = "cramfs";) 66 return 0; 67 } 68 69 return -1; 70} 71