[Ocfs2-tools-commits] manish commits r876 - in trunk/libocfs2: . include

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Thu May 5 16:18:52 CDT 2005


Author: manish
Date: 2005-05-05 16:18:50 -0500 (Thu, 05 May 2005)
New Revision: 876

Added:
   trunk/libocfs2/getsectsize.c
Modified:
   trunk/libocfs2/Makefile
   trunk/libocfs2/include/ocfs2.h
Log:
Add ocfs2_get_device_sectsize (from e2fsprogs)


Modified: trunk/libocfs2/Makefile
===================================================================
--- trunk/libocfs2/Makefile	2005-05-05 21:18:10 UTC (rev 875)
+++ trunk/libocfs2/Makefile	2005-05-05 21:18:50 UTC (rev 876)
@@ -62,6 +62,7 @@
 	extend_file.c	\
 	extents.c	\
 	extent_map.c	\
+	getsectsize.c	\
 	getsize.c	\
 	heartbeat.c	\
 	inode.c		\

Added: trunk/libocfs2/getsectsize.c
===================================================================
--- trunk/libocfs2/getsectsize.c	2005-05-05 21:18:10 UTC (rev 875)
+++ trunk/libocfs2/getsectsize.c	2005-05-05 21:18:50 UTC (rev 876)
@@ -0,0 +1,89 @@
+/*
+ * getsectsize.c --- get the sector size of a device.
+ * 
+ * Copyright (C) 1995, 1995 Theodore Ts'o.
+ * Copyright (C) 2003 VMware, Inc.
+ *
+ * %Begin-Header%
+ * This file may be redistributed under the terms of the GNU Public
+ * License.
+ * %End-Header%
+ */
+
+/* Modified for OCFS2 by Manish Singh <manish.singh at oracle.com> */
+
+#define HAVE_UNISTD_H 1
+#define HAVE_ERRNO_H 1
+#define HAVE_LINUX_FD_H 1
+#define HAVE_OPEN64 1
+
+#define _LARGEFILE_SOURCE
+#define _LARGEFILE64_SOURCE
+
+#include <stdio.h>
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#if HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#include <fcntl.h>
+#ifdef HAVE_LINUX_FD_H
+#include <sys/ioctl.h>
+#include <linux/fd.h>
+#endif
+
+#if defined(__linux__) && defined(_IO) && !defined(BLKGETSIZE)
+#define BLKSSZGET  _IO(0x12,104)/* get block device sector size */
+#endif
+
+#include "ocfs2.h"
+
+/*
+ * Returns the number of blocks in a partition
+ */
+errcode_t ocfs2_get_device_sectsize(const char *file, int *sectsize)
+{
+	int	fd;
+
+#ifdef HAVE_OPEN64
+	fd = open64(file, O_RDONLY);
+#else
+	fd = open(file, O_RDONLY);
+#endif
+	if (fd < 0)
+		return errno;
+
+#ifdef BLKSSZGET
+	if (ioctl(fd, BLKSSZGET, sectsize) >= 0) {
+		close(fd);
+		return 0;
+	}
+#endif
+	*sectsize = 0;
+	close(fd);
+	return 0;
+}
+
+#ifdef DEBUG_EXE
+int main(int argc, char **argv)
+{
+	int     sectsize;
+	int     retval;
+
+	if (argc < 2) {
+		fprintf(stderr, "Usage: %s device\n", argv[0]);
+		exit(1);
+	}
+
+	retval = ocfs2_get_device_sectsize(argv[1], &sectsize);
+	if (retval) {
+		com_err(argv[0], retval,
+			"while calling ocfs2_get_device_sectsize");
+		exit(1);
+	}
+	printf("Device %s has a hardware sector size of %d.\n",
+	       argv[1], sectsize);
+	exit(0);
+}
+#endif

Modified: trunk/libocfs2/include/ocfs2.h
===================================================================
--- trunk/libocfs2/include/ocfs2.h	2005-05-05 21:18:10 UTC (rev 875)
+++ trunk/libocfs2/include/ocfs2.h	2005-05-05 21:18:50 UTC (rev 876)
@@ -430,6 +430,8 @@
 errcode_t ocfs2_get_device_size(const char *file, int blocksize,
 				uint32_t *retblocks);
 
+errcode_t ocfs2_get_device_sectsize(const char *file, int *sectsize);
+
 errcode_t ocfs2_check_if_mounted(const char *file, int *mount_flags);
 errcode_t ocfs2_check_mount_point(const char *device, int *mount_flags,
 		                  char *mtpt, int mtlen);



More information about the Ocfs2-tools-commits mailing list