[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], §size);
+ 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