pkgsrc/sysutils/xfsprogs/patches/patch-ad
agc 8dc522478c Initial import of xfsprogs-2.7.3 into the Packages Collection.
XFS combines advanced journaling technology with full 64-bit
	addressing and scalable structures and algorithms.

	+ Journaled 64-bit filesystem with guaranteed filesystem consistency.

	+ XFS supports filesystem growth for mounted volumes, allows
	filesystem "freeze" and "thaw" operations to support volume level
	snapshots, and provides an online file defragmentation utility.

	+ XFS supports user and group quotas.  XFS considers quota information
	as filesystem metadata and uses journaling to avoid the need for
	lengthy quota consistency checks after a crash.

	+ For Linux 2.6 and beyond, when using 64 bit addressing in the block
	devices layer (CONFIG_LBD) and a 64 bit platform, filesystem size
	limit increases to 9 million terabytes (or the device limits).  For
	these later kernels on 32 bit platforms, 16TB is the current limit
	even with 64 bit addressing enabled in the block layer.

	This package contains filesystem manipulation and support programs.

Very loosely based on the FreeBSD port (I took the MASTER_SITES from there).
2005-12-30 23:03:05 +00:00

201 lines
5.3 KiB
Text

$NetBSD: patch-ad,v 1.1.1.1 2005/12/30 23:03:05 agc Exp $
--- /dev/null 2005-12-29 13:42:11.000000000 +0000
+++ include/netbsd.h 2005-12-29 14:07:41.000000000 +0000
@@ -0,0 +1,196 @@
+/*
+ * Copyright (c) 2004 Silicon Graphics, Inc. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it would be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * Further, this software is distributed without any warranty that it is
+ * free of the rightful claim of any third person regarding infringement
+ * or the like. Any license provided herein, whether implied or
+ * otherwise, applies only to this software file. Patent licenses, if
+ * any, provided herein do not apply to combinations of this program with
+ * other software, or any other product whatsoever.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write the Free Software Foundation, Inc., 59
+ * Temple Place - Suite 330, Boston MA 02111-1307, USA.
+ *
+ * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
+ * Mountain View, CA 94043, or:
+ *
+ * http://www.sgi.com
+ *
+ * For further information regarding this notice, see:
+ *
+ * http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
+ *
+ */
+#ifndef __XFS_NetBSD_H__
+#define __XFS_NetBSD_H__
+
+#include <sys/stat.h>
+#include <sys/param.h>
+#include <sys/ioctl.h>
+#include <sys/ioccom.h>
+#include <sys/mount.h>
+#if (defined(__NetBSD__) && (__NetBSD_Version__ >= 299000900))
+# include <sys/statvfs.h>
+#else
+# include <sys/statfs.h>
+#endif
+#include <ctype.h>
+#include <libgen.h>
+#include <paths.h>
+#include <uuid.h>
+
+#include <sys/endian.h>
+
+#define __bswap16 htobe16
+#define __bswap32 htobe32
+#define __bswap64 htobe64
+
+/* NetBSD file API is 64-bit aware */
+#define fstat64 fstat
+#define ftruncate64 ftruncate
+#define lseek64 lseek
+#define stat64 stat
+#define pwrite64 pwrite
+#define pread64 pread
+#define fdatasync fsync
+#define memalign(a,size) valloc(size)
+
+typedef u_int8_t __u8;
+typedef int8_t __s8;
+typedef u_int16_t __u16;
+typedef int16_t __s16;
+typedef u_int32_t __u32;
+typedef int32_t __s32;
+typedef u_int64_t __u64;
+typedef int64_t __s64;
+
+#define constpp char * const *
+
+#define EFSCORRUPTED 990 /* Filesystem is corrupted */
+
+typedef off_t xfs_off_t;
+typedef off_t off64_t;
+typedef __uint64_t xfs_ino_t;
+typedef __uint32_t xfs_dev_t;
+typedef __int64_t xfs_daddr_t;
+typedef char* xfs_caddr_t;
+typedef off_t loff_t;
+
+#ifndef _UCHAR_T_DEFINED
+typedef unsigned char uchar_t;
+#define _UCHAR_T_DEFINED 1
+#endif
+typedef enum { B_FALSE,B_TRUE } boolean_t;
+
+#define O_LARGEFILE 0
+
+#ifndef O_DIRECT
+#define O_DIRECT 0
+#endif
+
+#define HAVE_FID 1
+#define HAVE_SWABMACROS 1
+#define INT_SWAP16(type,var) ((typeof(type))(__bswap16((__u16)(var))))
+#define INT_SWAP32(type,var) ((typeof(type))(__bswap32((__u32)(var))))
+#define INT_SWAP64(type,var) ((typeof(type))(__bswap64((__u64)(var))))
+
+static __inline__ int xfsctl(const char *path, int fd, int cmd, void *p)
+{
+ return ioctl(fd, cmd, p);
+}
+
+static __inline__ int platform_test_xfs_fd(int fd)
+{
+#if (defined(__NetBSD__) && (__NetBSD_Version__ >= 299000900))
+ struct statvfs buf;
+ if (fstatvfs(fd, &buf) < 0)
+ return 0;
+#else
+ struct statvfs buf;
+ if (fstatvfs(fd, &buf) < 0)
+ return 0;
+#endif
+ return strcpy(buf.f_fstypename, "xfs") == 0;
+}
+
+static __inline__ int platform_test_xfs_path(const char *path)
+{
+#if (defined(__NetBSD__) && (__NetBSD_Version__ >= 299000900))
+ struct statvfs buf;
+ if (statvfs(path, &buf) < 0)
+ return 0;
+#else
+ struct statvfs buf;
+ if (statvfs(path, &buf) < 0)
+ return 0;
+#endif
+ return strcpy(buf.f_fstypename, "xfs") == 0;
+}
+
+#if (defined(__NetBSD__) && (__NetBSD_Version__ >= 299000900))
+static __inline__ int platform_fstatfs(int fd, struct statvfs *buf)
+{
+ return fstatvfs(fd, buf);
+}
+#else
+static __inline__ int platform_fstatfs(int fd, struct statfs *buf)
+{
+ return fstatfs(fd, buf);
+}
+#endif
+
+static __inline__ void platform_getoptreset(void)
+{
+ extern int optind;
+ optind = 0;
+}
+
+/*
+ * Implement Linux libuuid functions in terms of DEC DCE's uuid
+ * functions from NetBSD libc.
+ */
+
+static __inline__ int gnu_uuid_compare(uuid_t a, uuid_t b)
+{
+ return uuid_compare(&a, &b, NULL);
+}
+#define uuid_compare gnu_uuid_compare
+
+static __inline__ int uuid_is_null(uuid_t uid)
+{
+ return uuid_is_nil(&uid, NULL);
+}
+
+static __inline__ void uuid_unparse(uuid_t uid, char *buf)
+{
+ uint32_t status;
+ char *str;
+ uuid_to_string(&uid, &str, &status);
+ if (status == uuid_s_ok)
+ strcpy(buf, str);
+ else *buf = '\0';
+ free(str);
+}
+
+static __inline__ int gnu_uuid_parse(const char *buf, uuid_t *uid)
+{
+ uint32_t status;
+ uuid_from_string(buf, uid, &status);
+ return (status == uuid_s_ok);
+}
+#define uuid_parse(s,u) gnu_uuid_parse((s), &(u))
+
+#define uuid_generate(uid) uuid_create(&(uid), NULL)
+#define uuid_clear(uid) uuid_create_nil(&(uid), NULL)
+#define uuid_copy(dst, src) memcpy(&(dst), &(src), sizeof(uuid_t))
+
+#endif /* __XFS_NetBSD_H__ */