Re: NFS V4 Server for SLES9
Said, Nick wrote: We are implementing WebSphere clustering with dynamic failover on SLES9 servers. This clustering configuration requires each server to write its log files on a shared directory that can be accessed by other servers in the cluster. WebSphere uses a file locking mechanism to determine if servers in the cluster are up or down. We discovered that the NFS server distributed with SLES9 does not support file locking. This feature is provided in V4 NFS servers. SLES10 is distributed with a V4 NFS server, but not SLES9. On SLES9 did you start the NFSLOCK service? /etc/init.d/nfslock this runs: /sbin/rpc.lockd mark -- 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
Re: NFS V4 Server for SLES9
Mark Perry wrote: Said, Nick wrote: We are implementing WebSphere clustering with dynamic failover on SLES9 servers. This clustering configuration requires each server to write its log files on a shared directory that can be accessed by other servers in the cluster. WebSphere uses a file locking mechanism to determine if servers in the cluster are up or down. We discovered that the NFS server distributed with SLES9 does not support file locking. This feature is provided in V4 NFS servers. SLES10 is distributed with a V4 NFS server, but not SLES9. On SLES9 did you start the NFSLOCK service? /etc/init.d/nfslock this runs: /sbin/rpc.lockd mark Actually the lockd is built into the kernel and should be automatic: # # Network File Systems # CONFIG_NFS_FS=y CONFIG_NFS_V3=y CONFIG_NFS_ACL=y CONFIG_NFS_V4=y CONFIG_NFS_DIRECTIO=y CONFIG_NFSD=m CONFIG_NFSD_V3=y CONFIG_NFSD_ACL=y CONFIG_NFS_ACL_SUPPORT=y # CONFIG_NFSD_V4 is not set CONFIG_NFSD_TCP=y CONFIG_LOCKD=y CONFIG_STATD=y CONFIG_LOCKD_V4=y CONFIG_EXPORTFS=m So why do you think that SLES9 does not support NFS file locking? mark -- 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
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 | 0x8000) 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
Re: NFS V4 Server for SLES9
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 | 0x8000) 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