[stgt] FW: [fedora-arm] [PATCH] scsi-target-utils: Fix sync_file_range symbol for arm.
Vinit Dhatrak
vinitd at marvell.com
Tue Aug 18 07:01:19 CEST 2009
Sounds ok to me. Please include it upstream so that various package builders will have this fix.
________________________________________
From: FUJITA Tomonori [fujita.tomonori at lab.ntt.co.jp]
Sent: Tuesday, August 18, 2009 10:23 AM
To: Vinit Dhatrak
Cc: stgt at vger.kernel.org
Subject: Re: FW: [fedora-arm] [PATCH] scsi-target-utils: Fix sync_file_range symbol for arm.
On Mon, 17 Aug 2009 04:46:27 -0700
Vinit Dhatrak <vinitd at marvell.com> wrote:
> This patch is to fix build error for arm. Please refer to bug,
> https://bugzilla.redhat.com/show_bug.cgi?id=510699
Now the majority of distributions has glibc that supports
sync_file_range() so let's make things just work on any architectures.
This should work for Fedora.
diff --git a/usr/util.h b/usr/util.h
index 49d980d..7497cb6 100644
--- a/usr/util.h
+++ b/usr/util.h
@@ -2,6 +2,7 @@
#define __UTIL_H__
#include <byteswap.h>
+#include <fcntl.h>
#include <syscall.h>
#include <unistd.h>
#include <errno.h>
@@ -93,42 +94,20 @@ do { \
extern unsigned long pagesize, pageshift;
-
-/*
- * the latest glibc have a proper sync_file_range definition but
- * most of the distributions aren't shipped with it yet.
-*/
-
-#ifndef __NR_sync_file_range
-#if defined(__i386)
-#define __NR_sync_file_range 314
-#elif defined(__x86_64__)
-#define __NR_sync_file_range 277
-#elif defined(__ia64__)
-#define __NR_sync_file_range 1300
-#elif defined(__powerpc64__) || defined(__PPC__)
-#define __NR_sync_file_range 308
-#endif
-#endif
-
-#ifndef SYNC_FILE_RANGE_WAIT_BEFORE
-#define SYNC_FILE_RANGE_WAIT_BEFORE 1
-#define SYNC_FILE_RANGE_WRITE 2
-#define SYNC_FILE_RANGE_WAIT_AFTER 4
-#endif
-
-extern long int syscall(long int sysno, ...);
-
+#ifdef SYNC_FILE_RANGE_WAIT_BEFORE
static inline int __sync_file_range(int fd, __off64_t offset, __off64_t bytes)
{
int ret;
unsigned int flags = SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE
| SYNC_FILE_RANGE_WAIT_AFTER;
- ret = syscall(__NR_sync_file_range, fd, offset, bytes, flags);
+ ret = sync_file_range(fd, offset, bytes, flags);
if (ret)
ret = fsync(fd);
return ret;
}
+#else
+#define __sync_file_range(fd, offset, bytes) fsync(fd)
+#endif
#endif
--
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
More information about the stgt
mailing list