(root)/
util-linux-2.39/
libblkid/
src/
superblocks/
drbdproxy_datalog.c
       1  /*
       2   * Copyright (C) 2011 by Philipp Marek <philipp.marek@linbit.com>
       3   *
       4   * This file may be redistributed under the terms of the
       5   * GNU Lesser General Public License.
       6   */
       7  #include <stdio.h>
       8  #include <stdlib.h>
       9  #include <unistd.h>
      10  #include <string.h>
      11  #include <errno.h>
      12  #include <ctype.h>
      13  #include <inttypes.h>
      14  #include <stddef.h>
      15  
      16  #include "superblocks.h"
      17  
      18  
      19  struct log_header_t {
      20  	uint64_t magic;
      21  	uint64_t version;
      22  
      23  	unsigned char uuid[16];
      24  
      25  	uint64_t flags;
      26  } __attribute__((packed));
      27  
      28  
      29  static int probe_drbdproxy_datalog(blkid_probe pr,
      30  		const struct blkid_idmag *mag __attribute__((__unused__)))
      31  {
      32  	struct log_header_t *lh;
      33  
      34  	lh = (struct log_header_t *) blkid_probe_get_buffer(pr, 0, sizeof(*lh));
      35  	if (!lh)
      36  		return errno ? -errno : 1;
      37  
      38  	blkid_probe_set_uuid(pr, lh->uuid);
      39  	blkid_probe_sprintf_version(pr, "v%"PRIu64, le64_to_cpu(lh->version));
      40  
      41  	return 0;
      42  }
      43  
      44  const struct blkid_idinfo drbdproxy_datalog_idinfo =
      45  {
      46  	.name		= "drbdproxy_datalog",
      47  	.usage		= BLKID_USAGE_FILESYSTEM,
      48  	.probefunc	= probe_drbdproxy_datalog,
      49  	.minsz		= 16*1024,
      50  	.magics		=
      51  	{
      52  		{ .magic = "DRBDdlh*", .len = 8, .sboff = 0, .kboff = 0 },
      53  		{ NULL }
      54  	}
      55  };