From: green Date: Thu, 11 Aug 2005 10:47:53 +0000 (+0000) Subject: b=7278 X-Git-Tag: v1_7_140~1^12~3^2~55^5~29 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=bafeda07f8b8ebb8447bac731835719d1c46dd5f;p=fs%2Flustre-release.git b=7278 r=adilger Trick libsysio not to enforce O_EXCL open flag. MDS will enforce it for us. --- diff --git a/lustre/ChangeLog b/lustre/ChangeLog index d19a51d..73e759e 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -33,6 +33,12 @@ Details : The MDS has an upcall /proc/fs/lustre/mds/{mds}/group_upcall (set to /usr/sbin/l_getgroups if enabled) which will do MDS-side lookups for user supplementary groups into a cache. +Severity : minor +Bugzilla : 7278 +Description: O_CREAT|O_EXCL open flags in liblustre always return -EEXIST +Details : Make libsysio to not enforce O_EXCL by clearing the flag, + for liblustre O_EXCL is enforced by MDS. + 2005-08-08 Cluster File Systems, Inc. * version 1.4.4 * bug fixes diff --git a/lustre/liblustre/namei.c b/lustre/liblustre/namei.c index 0df523a..c6c43b9 100644 --- a/lustre/liblustre/namei.c +++ b/lustre/liblustre/namei.c @@ -501,6 +501,12 @@ translate_lookup_intent(struct intent *intent, const char *path) if (it->it_flags & O_CREAT) { it->it_op |= IT_CREAT; it->it_create_mode = *((int*)intent->int_arg1); + /* XXX libsysio hack. For O_EXCL, libsysio depends on + this lookup to return negative result, but then there is no + way to find out original intent in ll_iop_open(). So we just + clear O_EXCL from libsysio flags here to avoid checking + for negative result. O_EXCL would be enforced by MDS. */ + *((int*)intent->int_arg2) &= ~O_EXCL; } if (intent->int_opmask & INT_GETATTR)