Date: Wed, 13 Feb 2002 16:17:11 +1300 (NZDT) From: Jonathan Chen <jonc@chen.org.nz> To: FreeBSD-gnats-submit@freebsd.org Subject: kern/34895: Linuxulator linux_fcntl64() doesn't handle mode F_SETLKW64 Message-ID: <200202130317.g1D3HBo00755@wapsolutions.co.nz>
next in thread | raw e-mail | index | archive | help
>Number: 34895 >Category: kern >Synopsis: Linuxulator linux_fcntl64() doesn't handle mode F_SETLKW64 >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Tue Feb 12 19:20:01 PST 2002 >Closed-Date: >Last-Modified: >Originator: Jonathan Chen >Release: FreeBSD 4.5-STABLE i386 >Organization: >Environment: System: FreeBSD central.wapsolutions.co.nz 4.5-STABLE FreeBSD 4.5-STABLE #0: Tue Jan 29 16:21:08 NZDT 2002 root@central.wapsolutions.co.nz:/usr/obj/usr/src/sys/GENERIC i386 >Description: When Linux Informix-SE, any attempt to create a database will fail with a Invalid argument error. Running truss(1) on the sqlexec process reveals the following: [...] linux_open("a.dbs/syscolumns.idx",32770,00) = 4 (0x4) linux_fcntl64(0x4,0x2,0x1) = 0 (0x0) linux_open("a.dbs/syscolumns.dat",32770,00) = 5 (0x5) linux_fcntl64(0x5,0x2,0x1) = 0 (0x0) linux_fcntl64(0x4,0xe,0x8193a88) ERR#22 'Invalid argument' write(1,0x81a4500,22) = 22 (0x16) [...] A quick look at a Linux system's /usr/include/bits/fcntl.h shows: [...] /* Values for the second argument to `fcntl'. */ #define F_DUPFD 0 /* Duplicate file descriptor. */ #define F_GETFD 1 /* Get file descriptor flags. */ #define F_SETFD 2 /* Set file descriptor flags. */ #define F_GETFL 3 /* Get file status flags. */ #define F_SETFL 4 /* Set file status flags. */ #ifndef __USE_FILE_OFFSET64 # define F_GETLK 5 /* Get record locking info. */ # define F_SETLK 6 /* Set record locking info (non-blocking). */ # define F_SETLKW 7 /* Set record locking info (blocking). */ #else # define F_GETLK F_GETLK64 /* Get record locking info. */ # define F_SETLK F_SETLK64 /* Set record locking info (non-blocking).*/ # define F_SETLKW F_SETLKW64 /* Set record locking info (blocking). */ #endif #define F_GETLK64 12 /* Get record locking info. */ #define F_SETLK64 13 /* Set record locking info (non-blocking). */ #define F_SETLKW64 14 /* Set record locking info (blocking). */ [...] I'm assuming that the '0xe' in the invalid call above refers to F_SETLKW64 on the Linux side. Any tips to fix this appreciated. >How-To-Repeat: Install and load linux_base-7 Download Informix SE http://www.informix.com/evaluate/ and install. Attempt to create a database >Fix: >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200202130317.g1D3HBo00755>