X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fllite%2Fllite_nfs.c;h=f20bf657be5ddbb32950d08d1121b89f14f566e9;hb=b15f3875f46eec3c5186fe6b84cf2cda7ceb8518;hp=afd0c9b8c01f252df759a12cbf89e506f8c33361;hpb=3192e52a89946f12fd36d28a686c169d01d36e64;p=fs%2Flustre-release.git diff --git a/lustre/llite/llite_nfs.c b/lustre/llite/llite_nfs.c index afd0c9b..f20bf65 100644 --- a/lustre/llite/llite_nfs.c +++ b/lustre/llite/llite_nfs.c @@ -1,27 +1,44 @@ /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: * - * NFS export of Lustre Light File System + * GPL HEADER START * - * Copyright (c) 2002, 2006 Cluster File Systems, Inc. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * - * Author: Yury Umanets - * Huang Hua + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 only, + * as published by the Free Software Foundation. * - * This file is part of Lustre, http://www.lustre.org. + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License version 2 for more details (a copy is included + * in the LICENSE file that accompanied this code). * - * Lustre is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. + * You should have received a copy of the GNU General Public License + * version 2 along with this program; If not, see + * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf * - * Lustre is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. * - * You should have received a copy of the GNU General Public License - * along with Lustre; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * GPL HEADER END + */ +/* + * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Use is subject to license terms. + */ +/* + * This file is part of Lustre, http://www.lustre.org/ + * Lustre is a trademark of Sun Microsystems, Inc. + * + * lustre/lustre/llite/llite_nfs.c + * + * NFS export of Lustre Light File System + * + * Author: Yury Umanets + * Author: Huang Hua */ #define DEBUG_SUBSYSTEM S_LLITE @@ -31,6 +48,18 @@ #include #endif +__u32 get_uuid2int(const char *name, int len) +{ + __u32 key0 = 0x12a3fe2d, key1 = 0x37abe8f9; + while (len--) { + __u32 key = key1 + (key0 ^ (*name++ * 7152373)); + if (key & 0x80000000) key -= 0x7fffffff; + key1 = key0; + key0 = key; + } + return (key0 << 1); +} + static int ll_nfs_test_inode(struct inode *inode, void *opaque) { return lu_fid_eq(&ll_i2info(inode)->lli_fid, @@ -70,7 +99,7 @@ static struct inode *search_inode_for_lustre(struct super_block *sb, RETURN(ERR_PTR(rc)); } - rc = ll_prep_inode(&inode, req, REPLY_REC_OFF, sb); + rc = ll_prep_inode(&inode, req, sb); ptlrpc_req_finished(req); if (rc) RETURN(ERR_PTR(rc)); @@ -78,8 +107,6 @@ static struct inode *search_inode_for_lustre(struct super_block *sb, RETURN(inode); } -extern struct dentry_operations ll_d_ops; - static struct dentry *ll_iget_for_nfs(struct super_block *sb, struct lu_fid *fid, umode_t mode) @@ -109,8 +136,9 @@ static struct dentry *ll_iget_for_nfs(struct super_block *sb, iput(inode); RETURN(ERR_PTR(-ENOMEM)); } - ll_set_dd(result); - result->d_op = &ll_d_ops; + + ll_dops_init(result, 1); + RETURN(result); } @@ -159,7 +187,7 @@ static int ll_encode_fh(struct dentry *de, __u32 *fh, int *plen, int connectable ENTRY; CDEBUG(D_INFO, "encoding for (%lu,"DFID") maxlen=%d minlen=%d\n", - inode->i_ino, PFID(fid), *plen, ONE_FH_LEN); + inode->i_ino, PFID(fid), *plen, (int)ONE_FH_LEN); if (*plen < ONE_FH_LEN) RETURN(255); @@ -219,8 +247,7 @@ static struct dentry *ll_get_parent(struct dentry *dchild) CERROR("failure %d inode %lu get parent\n", rc, dir->i_ino); RETURN(ERR_PTR(rc)); } - body = lustre_msg_buf(req->rq_repmsg, REPLY_REC_OFF, sizeof(*body)); - + body = req_capsule_server_get(&req->rq_pill, &RMF_MDT_BODY); LASSERT(body->valid & OBD_MD_FLID); CDEBUG(D_INFO, "parent for "DFID" is "DFID"\n",