aboutsummaryrefslogtreecommitdiffstats
path: root/fs/cifs
diff options
context:
space:
mode:
authorSachin Prabhu <sprabhu@redhat.com>2013-11-25 12:09:49 -0500
committerSteve French <smfrench@gmail.com>2014-01-20 01:13:51 -0500
commitb5be1a1c4c57a092cb60c709a0491d4ecead3d58 (patch)
tree03479ca9fadcac5f8313603b2905f7ac3d061951 /fs/cifs
parentabf9767c823bf57837c2032f21332a6efc38a13e (diff)
cifs: Rename and cleanup open_query_close_cifs_symlink()
Rename open_query_close_cifs_symlink to cifs_query_mf_symlink() to make the name more consistent with other protocol version specific functions. We also pass tcon as an argument to the function. This is already available in the calling functions and we can avoid having to make an unnecessary lookup. Signed-off-by: Sachin Prabhu <sprabhu@redhat.com> Reviewed-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve French <smfrench@gmail.com>
Diffstat (limited to 'fs/cifs')
-rw-r--r--fs/cifs/cifsglob.h5
-rw-r--r--fs/cifs/cifsproto.h7
-rw-r--r--fs/cifs/link.c37
-rw-r--r--fs/cifs/smb1ops.c2
4 files changed, 20 insertions, 31 deletions
diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
index f918a998a087..fba4d1341f88 100644
--- a/fs/cifs/cifsglob.h
+++ b/fs/cifs/cifsglob.h
@@ -370,8 +370,9 @@ struct smb_version_operations {
370 void (*new_lease_key)(struct cifs_fid *); 370 void (*new_lease_key)(struct cifs_fid *);
371 int (*generate_signingkey)(struct cifs_ses *); 371 int (*generate_signingkey)(struct cifs_ses *);
372 int (*calc_signature)(struct smb_rqst *, struct TCP_Server_Info *); 372 int (*calc_signature)(struct smb_rqst *, struct TCP_Server_Info *);
373 int (*query_mf_symlink)(const unsigned char *, char *, unsigned int *, 373 int (*query_mf_symlink)(unsigned int, struct cifs_tcon *,
374 struct cifs_sb_info *, unsigned int); 374 struct cifs_sb_info *, const unsigned char *,
375 char *, unsigned int *);
375 /* if we can do cache read operations */ 376 /* if we can do cache read operations */
376 bool (*is_read_op)(__u32); 377 bool (*is_read_op)(__u32);
377 /* set oplock level for the inode */ 378 /* set oplock level for the inode */
diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h
index 2c29db6a247e..10b9ab1d1ae9 100644
--- a/fs/cifs/cifsproto.h
+++ b/fs/cifs/cifsproto.h
@@ -496,7 +496,8 @@ void cifs_writev_complete(struct work_struct *work);
496struct cifs_writedata *cifs_writedata_alloc(unsigned int nr_pages, 496struct cifs_writedata *cifs_writedata_alloc(unsigned int nr_pages,
497 work_func_t complete); 497 work_func_t complete);
498void cifs_writedata_release(struct kref *refcount); 498void cifs_writedata_release(struct kref *refcount);
499int open_query_close_cifs_symlink(const unsigned char *path, char *pbuf, 499int cifs_query_mf_symlink(unsigned int xid, struct cifs_tcon *tcon,
500 unsigned int *pbytes_read, struct cifs_sb_info *cifs_sb, 500 struct cifs_sb_info *cifs_sb,
501 unsigned int xid); 501 const unsigned char *path, char *pbuf,
502 unsigned int *pbytes_read);
502#endif /* _CIFSPROTO_H */ 503#endif /* _CIFSPROTO_H */
diff --git a/fs/cifs/link.c b/fs/cifs/link.c
index 28bc8ee97056..c8e29682ccdb 100644
--- a/fs/cifs/link.c
+++ b/fs/cifs/link.c
@@ -305,54 +305,41 @@ CIFSCouldBeMFSymlink(const struct cifs_fattr *fattr)
305} 305}
306 306
307int 307int
308open_query_close_cifs_symlink(const unsigned char *path, char *pbuf, 308cifs_query_mf_symlink(unsigned int xid, struct cifs_tcon *tcon,
309 unsigned int *pbytes_read, struct cifs_sb_info *cifs_sb, 309 struct cifs_sb_info *cifs_sb, const unsigned char *path,
310 unsigned int xid) 310 char *pbuf, unsigned int *pbytes_read)
311{ 311{
312 int rc; 312 int rc;
313 int oplock = 0; 313 int oplock = 0;
314 __u16 netfid = 0; 314 __u16 netfid = 0;
315 struct tcon_link *tlink;
316 struct cifs_tcon *ptcon;
317 struct cifs_io_parms io_parms; 315 struct cifs_io_parms io_parms;
318 int buf_type = CIFS_NO_BUFFER; 316 int buf_type = CIFS_NO_BUFFER;
319 FILE_ALL_INFO file_info; 317 FILE_ALL_INFO file_info;
320 318
321 tlink = cifs_sb_tlink(cifs_sb); 319 rc = CIFSSMBOpen(xid, tcon, path, FILE_OPEN, GENERIC_READ,
322 if (IS_ERR(tlink))
323 return PTR_ERR(tlink);
324 ptcon = tlink_tcon(tlink);
325
326 rc = CIFSSMBOpen(xid, ptcon, path, FILE_OPEN, GENERIC_READ,
327 CREATE_NOT_DIR, &netfid, &oplock, &file_info, 320 CREATE_NOT_DIR, &netfid, &oplock, &file_info,
328 cifs_sb->local_nls, 321 cifs_sb->local_nls,
329 cifs_sb->mnt_cifs_flags & 322 cifs_sb->mnt_cifs_flags &
330 CIFS_MOUNT_MAP_SPECIAL_CHR); 323 CIFS_MOUNT_MAP_SPECIAL_CHR);
331 if (rc != 0) { 324 if (rc)
332 cifs_put_tlink(tlink);
333 return rc; 325 return rc;
334 }
335 326
336 if (file_info.EndOfFile != cpu_to_le64(CIFS_MF_SYMLINK_FILE_SIZE)) { 327 if (file_info.EndOfFile != cpu_to_le64(CIFS_MF_SYMLINK_FILE_SIZE))
337 CIFSSMBClose(xid, ptcon, netfid);
338 cifs_put_tlink(tlink);
339 /* it's not a symlink */ 328 /* it's not a symlink */
340 return rc; 329 goto out;
341 }
342 330
343 io_parms.netfid = netfid; 331 io_parms.netfid = netfid;
344 io_parms.pid = current->tgid; 332 io_parms.pid = current->tgid;
345 io_parms.tcon = ptcon; 333 io_parms.tcon = tcon;
346 io_parms.offset = 0; 334 io_parms.offset = 0;
347 io_parms.length = CIFS_MF_SYMLINK_FILE_SIZE; 335 io_parms.length = CIFS_MF_SYMLINK_FILE_SIZE;
348 336
349 rc = CIFSSMBRead(xid, &io_parms, pbytes_read, &pbuf, &buf_type); 337 rc = CIFSSMBRead(xid, &io_parms, pbytes_read, &pbuf, &buf_type);
350 CIFSSMBClose(xid, ptcon, netfid); 338out:
351 cifs_put_tlink(tlink); 339 CIFSSMBClose(xid, tcon, netfid);
352 return rc; 340 return rc;
353} 341}
354 342
355
356int 343int
357CIFSCheckMFSymlink(unsigned int xid, struct cifs_tcon *tcon, 344CIFSCheckMFSymlink(unsigned int xid, struct cifs_tcon *tcon,
358 struct cifs_sb_info *cifs_sb, struct cifs_fattr *fattr, 345 struct cifs_sb_info *cifs_sb, struct cifs_fattr *fattr,
@@ -372,8 +359,8 @@ CIFSCheckMFSymlink(unsigned int xid, struct cifs_tcon *tcon,
372 return -ENOMEM; 359 return -ENOMEM;
373 360
374 if (tcon->ses->server->ops->query_mf_symlink) 361 if (tcon->ses->server->ops->query_mf_symlink)
375 rc = tcon->ses->server->ops->query_mf_symlink(path, buf, 362 rc = tcon->ses->server->ops->query_mf_symlink(xid, tcon,
376 &bytes_read, cifs_sb, xid); 363 cifs_sb, path, buf, &bytes_read);
377 else 364 else
378 rc = -ENOSYS; 365 rc = -ENOSYS;
379 366
diff --git a/fs/cifs/smb1ops.c b/fs/cifs/smb1ops.c
index 5f5ba0dc2ee1..099c27602257 100644
--- a/fs/cifs/smb1ops.c
+++ b/fs/cifs/smb1ops.c
@@ -1009,7 +1009,7 @@ struct smb_version_operations smb1_operations = {
1009 .mand_lock = cifs_mand_lock, 1009 .mand_lock = cifs_mand_lock,
1010 .mand_unlock_range = cifs_unlock_range, 1010 .mand_unlock_range = cifs_unlock_range,
1011 .push_mand_locks = cifs_push_mandatory_locks, 1011 .push_mand_locks = cifs_push_mandatory_locks,
1012 .query_mf_symlink = open_query_close_cifs_symlink, 1012 .query_mf_symlink = cifs_query_mf_symlink,
1013 .is_read_op = cifs_is_read_op, 1013 .is_read_op = cifs_is_read_op,
1014}; 1014};
1015 1015