This is the issue, Mark. Thanks for the feedback. Our move to SLES10 is
becoming more imminent.

...Nick.

-----Original Message-----
From: Linux on 390 Port [mailto:[EMAIL PROTECTED] On Behalf Of
Mark Perry
Sent: Friday, March 21, 2008 11:47 AM
To: LINUX-390@VM.MARIST.EDU
Subject: Re: NFS V4 Server for SLES9

Sorry!
I do see the potential problem you are in - if  Websphere is using
flock().

The source code explicitly state no BSD flocks
"  * No BSD flocks over NFS allowed.' (See code excerpt below)

The code on SLES10 has an flock() function and it looks to me like it
will convert flock() to a POSIX lock.
Not sure if thats what you want, but I think using SLES10 is your only
option. (With NFS V3 or V4)

mark


 From fs/nfs/file.c:

/*
 * Lock a (portion of) a file
 */
int
nfs_lock(struct file *filp, int cmd, struct file_lock *fl)
{
        struct inode * inode = filp->f_mapping->host;
        int     status = 0;
        int     status2;

        dprintk("NFS: nfs_lock(f=%s/%ld, t=%x, fl=%x, r=%Ld:%Ld)\n",
                        inode->i_sb->s_id, inode->i_ino,
                        fl->fl_type, fl->fl_flags,
                        (long long)fl->fl_start, (long long)fl->fl_end);

        if (!inode)
                return -EINVAL;

        /* No mandatory locks over NFS */
        if ((inode->i_mode & (S_ISGID | S_IXGRP)) == S_ISGID)
                return -ENOLCK;

        if (NFS_PROTO(inode)->version != 4) {
                /* Fake OK code if mounted without NLM support */
                if (NFS_SERVER(inode)->flags & NFS_MOUNT_NONLM) {
                        if (IS_GETLK(cmd))
                                status = LOCK_USE_CLNT;
                        goto out_ok;
                }
        }

        /*
         * No BSD flocks over NFS allowed.
         * Note: we could try to fake a POSIX lock request here by
         * using ((u32) filp | 0x80000000) or some such as the pid.
         * Not sure whether that would be unique, though, or whether
         * that would break in other places.
         */
        if (!fl->fl_owner || !(fl->fl_flags & FL_POSIX))
                return -ENOLCK;

----------------------------------------------------------------------
For LINUX-390 subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: INFO LINUX-390 or
visit
http://www.marist.edu/htbin/wlvindex?LINUX-390

This email is intended for the recipient only.  If you are not the intended 
recipient please disregard, and do not use the information for any purpose.

----------------------------------------------------------------------
For LINUX-390 subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: INFO LINUX-390 or visit
http://www.marist.edu/htbin/wlvindex?LINUX-390

Reply via email to