From patchwork Tue Mar 17 16:40:29 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Igor Mammedov X-Patchwork-Id: 12641 Received: from lists.samba.org (mail.samba.org [66.70.73.150]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n2HGkOCF029429 for ; Tue, 17 Mar 2009 16:46:24 GMT Received: from dp.samba.org (localhost [127.0.0.1]) by lists.samba.org (Postfix) with ESMTP id 41FF0163C63 for ; Tue, 17 Mar 2009 16:46:09 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.1.7 (2006-10-05) on dp.samba.org X-Spam-Level: X-Spam-Status: No, score=-3.6 required=3.8 tests=AWL,BAYES_00, DNS_FROM_RFC_POST,SPF_PASS autolearn=no version=3.1.7 X-Original-To: linux-cifs-client@lists.samba.org Delivered-To: linux-cifs-client@lists.samba.org Received: from mail-bw0-f178.google.com (mail-bw0-f178.google.com [209.85.218.178]) by lists.samba.org (Postfix) with ESMTP id 69840163C31 for ; Tue, 17 Mar 2009 16:45:42 +0000 (GMT) Received: by bwz26 with SMTP id 26so155896bwz.20 for ; Tue, 17 Mar 2009 09:45:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from :user-agent:mime-version:to:subject:content-type; bh=60MV+bp+GczRKVCIyBnBjkIRnhDUE3d9nMZj/uR7wTM=; b=H+9PeKzYpTMR9lQxLqNix4Sr1/m0qMgwFaZ/d4il4QNSKIv8n8JeKf2qmZ+372nZXI 0NOU0ggafsMmmrjWpkhD6J+0JrwOJwLpZU5TJ05x9MOQqbsMrQwoRmL5Nv8RgOvHaSdy 4xbisHAoreT1Q2V5Uvx6+CAFrlCUdUGc0Midk= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:subject :content-type; b=I5KhhKax2etuU5aP4cwLZWD1n+iO/azN4YQ0zMUWy86+pz1U/Xf1FjRPwR/my/BNME 65SXimtNTBVK9fL2HkFYAirC35gCelGfGxxuJG/gBQVXA5mSCmvlPkNwfTkQ+z/3ntyY 1PA1v0/jvqQ03wPHnZFrh5a+SwL47rB9Jr1jg= Received: by 10.223.124.75 with SMTP id t11mr184194far.73.1237308031511; Tue, 17 Mar 2009 09:40:31 -0700 (PDT) Received: from l102796.int.cboss.ru ([195.245.232.177]) by mx.google.com with ESMTPS id z15sm10538506fkz.11.2009.03.17.09.40.30 (version=TLSv1/SSLv3 cipher=RC4-MD5); Tue, 17 Mar 2009 09:40:30 -0700 (PDT) Message-ID: <49BFD27D.6050004@gmail.com> Date: Tue, 17 Mar 2009 19:40:29 +0300 From: Igor Mammedov User-Agent: Thunderbird 2.0.0.19 (X11/20081209) MIME-Version: 1.0 To: "linux-cifs-client@lists.samba.org" , Jeff Layton , Steve French Subject: [linux-cifs-client] [PATCH 1/3] [CIFS] Rename compose_mount_options to cifs_compose_mount_options. X-BeenThere: linux-cifs-client@lists.samba.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: The Linux CIFS VFS client List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-cifs-client-bounces+patchwork-cifs-client=patchwork.kernel.org@lists.samba.org Errors-To: linux-cifs-client-bounces+patchwork-cifs-client=patchwork.kernel.org@lists.samba.org >From 61df28916b1583cad6873d711658364cb8162c08 Mon Sep 17 00:00:00 2001 From: Igor Mammedov Date: Tue, 17 Mar 2009 16:44:07 +0300 Subject: [PATCH 1/3] [CIFS] Rename compose_mount_options to cifs_compose_mount_options. Make it available to others for reuse. Signed-off-by: Igor Mammedov --- fs/cifs/cifs_dfs_ref.c | 36 ++++++++++++++++-------------------- fs/cifs/cifsglob.h | 3 +++ 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/fs/cifs/cifs_dfs_ref.c b/fs/cifs/cifs_dfs_ref.c index 85c0a74..5fdbf8a 100644 --- a/fs/cifs/cifs_dfs_ref.c +++ b/fs/cifs/cifs_dfs_ref.c @@ -104,9 +104,9 @@ static char *cifs_get_share_name(const char *node_name) /** - * compose_mount_options - creates mount options for refferral + * cifs_compose_mount_options - creates mount options for refferral * @sb_mountdata: parent/root DFS mount options (template) - * @dentry: point where we are going to mount + * @fullpath: full path in UNC format * @ref: server's referral * @devname: pointer for saving device name * @@ -116,8 +116,8 @@ static char *cifs_get_share_name(const char *node_name) * Returns: pointer to new mount options or ERR_PTR. * Caller is responcible for freeing retunrned value if it is not error. */ -static char *compose_mount_options(const char *sb_mountdata, - struct dentry *dentry, +char *cifs_compose_mount_options(const char *sb_mountdata, + const char *fullpath, const struct dfs_info3_param *ref, char **devname) { @@ -128,7 +128,6 @@ static char *compose_mount_options(const char *sb_mountdata, char *srvIP = NULL; char sep = ','; int off, noff; - char *fullpath; if (sb_mountdata == NULL) return ERR_PTR(-EINVAL); @@ -202,17 +201,6 @@ static char *compose_mount_options(const char *sb_mountdata, goto compose_mount_options_err; } - /* - * this function gives us a path with a double backslash prefix. We - * require a single backslash for DFS. Temporarily increment fullpath - * to put it in the proper form and decrement before freeing it. - */ - fullpath = build_path_from_dentry(dentry); - if (!fullpath) { - rc = -ENOMEM; - goto compose_mount_options_err; - } - ++fullpath; tkn_e = strchr(tkn_e + 1, '\\'); if (tkn_e || (strlen(fullpath) - ref->path_consumed)) { strncat(mountdata, &sep, 1); @@ -221,8 +209,6 @@ static char *compose_mount_options(const char *sb_mountdata, strcat(mountdata, tkn_e + 1); strcat(mountdata, fullpath + ref->path_consumed); } - --fullpath; - kfree(fullpath); /*cFYI(1,("%s: parent mountdata: %s", __func__,sb_mountdata));*/ /*cFYI(1, ("%s: submount mountdata: %s", __func__, mountdata ));*/ @@ -245,10 +231,20 @@ static struct vfsmount *cifs_dfs_do_refmount(const struct vfsmount *mnt_parent, struct vfsmount *mnt; char *mountdata; char *devname = NULL; + char *fullpath; cifs_sb = CIFS_SB(dentry->d_inode->i_sb); - mountdata = compose_mount_options(cifs_sb->mountdata, - dentry, ref, &devname); + /* + * this function gives us a path with a double backslash prefix. We + * require a single backslash for DFS. + */ + fullpath = build_path_from_dentry(dentry); + if (!fullpath) + return ERR_PTR(-ENOMEM); + + mountdata = cifs_compose_mount_options(cifs_sb->mountdata, + fullpath + 1, ref, &devname); + kfree(fullpath); if (IS_ERR(mountdata)) return (struct vfsmount *)mountdata; diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h index 9fbf4df..63e58a7 100644 --- a/fs/cifs/cifsglob.h +++ b/fs/cifs/cifsglob.h @@ -493,6 +493,9 @@ static inline void free_dfs_info_array(struct dfs_info3_param *param, kfree(param); } +char *cifs_compose_mount_options(const char *sb_mountdata, const char *fullpath, + const struct dfs_info3_param *ref, char **devname); + #define MID_FREE 0 #define MID_REQUEST_ALLOCATED 1 #define MID_REQUEST_SUBMITTED 2 -- 1.6.0.2