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//config:config FEATURE_VOLUMEID_CRAMFS 21//config: bool "cramfs filesystem" 22//config: default y 23//config: depends on VOLUMEID 24 25//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_CRAMFS) += cramfs.o 26 27#include "volume_id_internal.h" 28 29struct cramfs_super { 30 uint32_t magic; 31 uint32_t size; 32 uint32_t flags; 33 uint32_t future; 34 uint8_t signature[16]; 35 struct cramfs_info { 36 uint32_t crc; 37 uint32_t edition; 38 uint32_t blocks; 39 uint32_t files; 40 } PACKED info; 41 uint8_t name[16]; 42} PACKED; 43 44int FAST_FUNC volume_id_probe_cramfs(struct volume_id *id /*,uint64_t off*/) 45{ 46#define off ((uint64_t)0) 47 struct cramfs_super *cs; 48 49 dbg("probing at offset 0x%llx", (unsigned long long) off); 50 51 cs = volume_id_get_buffer(id, off, 0x200); 52 if (cs == NULL) 53 return -1; 54 55 if (cs->magic == cpu_to_be32(0x453dcd28)) { 56// volume_id_set_label_raw(id, cs->name, 16); 57 volume_id_set_label_string(id, cs->name, 16); 58 59// volume_id_set_usage(id, VOLUME_ID_FILESYSTEM); 60 IF_FEATURE_BLKID_TYPE(id->type = "cramfs";) 61 return 0; 62 } 63 64 return -1; 65} 66