Message ID | 1385399395-19217-7-git-send-email-sprabhu@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Mon, 25 Nov 2013 17:09:53 +0000 Sachin Prabhu <sprabhu@redhat.com> wrote: > This patch makes cosmetic changes. We group similar functions together > and separate out the protocol specific functions. > > Signed-off-by: Sachin Prabhu <sprabhu@redhat.com> > --- > fs/cifs/link.c | 124 +++++++++++++++++++++++++++++++-------------------------- > 1 file changed, 68 insertions(+), 56 deletions(-) > > diff --git a/fs/cifs/link.c b/fs/cifs/link.c > index d45d43d..ee5ae46 100644 > --- a/fs/cifs/link.c > +++ b/fs/cifs/link.c > @@ -29,6 +29,10 @@ > #include "cifs_debug.h" > #include "cifs_fs_sb.h" > > +/* > + * M-F Symlink Functions - Begin > + */ > + > #define CIFS_MF_SYMLINK_LEN_OFFSET (4+1) > #define CIFS_MF_SYMLINK_MD5_OFFSET (CIFS_MF_SYMLINK_LEN_OFFSET+(4+1)) > #define CIFS_MF_SYMLINK_LINK_OFFSET (CIFS_MF_SYMLINK_MD5_OFFSET+(32+1)) > @@ -178,6 +182,20 @@ format_mf_symlink(u8 *buf, unsigned int buf_len, const char *link_str) > return 0; > } > > +bool > +couldbe_mf_symlink(const struct cifs_fattr *fattr) > +{ > + if (!(fattr->cf_mode & S_IFREG)) > + /* it's not a symlink */ > + return false; > + > + if (fattr->cf_eof != CIFS_MF_SYMLINK_FILE_SIZE) > + /* it's not a symlink */ > + return false; > + > + return true; > +} > + > static int > create_mf_symlink(const unsigned int xid, struct cifs_tcon *tcon, > struct cifs_sb_info *cifs_sb, const char *fromName, > @@ -241,20 +259,60 @@ out: > return rc; > } > > -bool > -couldbe_mf_symlink(const struct cifs_fattr *fattr) > +int > +check_mf_symlink(unsigned int xid, struct cifs_tcon *tcon, > + struct cifs_sb_info *cifs_sb, struct cifs_fattr *fattr, > + const unsigned char *path) > { > - if (!(fattr->cf_mode & S_IFREG)) > + int rc; > + u8 *buf = NULL; > + unsigned int link_len = 0; > + unsigned int bytes_read = 0; > + > + if (!couldbe_mf_symlink(fattr)) > /* it's not a symlink */ > - return false; > + return 0; > > - if (fattr->cf_eof != CIFS_MF_SYMLINK_FILE_SIZE) > + buf = kmalloc(CIFS_MF_SYMLINK_FILE_SIZE, GFP_KERNEL); > + if (!buf) > + return -ENOMEM; > + > + if (tcon->ses->server->ops->query_mf_symlink) > + rc = tcon->ses->server->ops->query_mf_symlink(xid, tcon, > + cifs_sb, path, buf, &bytes_read); > + else > + rc = -ENOSYS; > + > + if (rc) > + goto out; > + > + if (bytes_read == 0) /* not a symlink */ > + goto out; > + > + rc = parse_mf_symlink(buf, bytes_read, &link_len, NULL); > + if (rc == -EINVAL) { > /* it's not a symlink */ > - return false; > + rc = 0; > + goto out; > + } > > - return true; > + if (rc != 0) > + goto out; > + > + /* it is a symlink */ > + fattr->cf_eof = link_len; > + fattr->cf_mode &= ~S_IFMT; > + fattr->cf_mode |= S_IFLNK | S_IRWXU | S_IRWXG | S_IRWXO; > + fattr->cf_dtype = DT_LNK; > +out: > + kfree(buf); > + return rc; > } > > +/* > + * SMB 1.0 Protocol specific functions > + */ > + > int > cifs_query_mf_symlink(unsigned int xid, struct cifs_tcon *tcon, > struct cifs_sb_info *cifs_sb, const unsigned char *path, > @@ -324,55 +382,9 @@ cifs_create_mf_symlink(unsigned int xid, struct cifs_tcon *tcon, > return rc; > } > > -int > -check_mf_symlink(unsigned int xid, struct cifs_tcon *tcon, > - struct cifs_sb_info *cifs_sb, struct cifs_fattr *fattr, > - const unsigned char *path) > -{ > - int rc; > - u8 *buf = NULL; > - unsigned int link_len = 0; > - unsigned int bytes_read = 0; > - > - if (!couldbe_mf_symlink(fattr)) > - /* it's not a symlink */ > - return 0; > - > - buf = kmalloc(CIFS_MF_SYMLINK_FILE_SIZE, GFP_KERNEL); > - if (!buf) > - return -ENOMEM; > - > - if (tcon->ses->server->ops->query_mf_symlink) > - rc = tcon->ses->server->ops->query_mf_symlink(xid, tcon, > - cifs_sb, path, buf, &bytes_read); > - else > - rc = -ENOSYS; > - > - if (rc) > - goto out; > - > - if (bytes_read == 0) /* not a symlink */ > - goto out; > - > - rc = parse_mf_symlink(buf, bytes_read, &link_len, NULL); > - if (rc == -EINVAL) { > - /* it's not a symlink */ > - rc = 0; > - goto out; > - } > - > - if (rc != 0) > - goto out; > - > - /* it is a symlink */ > - fattr->cf_eof = link_len; > - fattr->cf_mode &= ~S_IFMT; > - fattr->cf_mode |= S_IFLNK | S_IRWXU | S_IRWXG | S_IRWXO; > - fattr->cf_dtype = DT_LNK; > -out: > - kfree(buf); > - return rc; > -} > +/* > + * M-F Symlink Functions - End > + */ > > int > cifs_hardlink(struct dentry *old_file, struct inode *inode, Reviewed-by: Jeff Layton <jlayton@redhat.com> -- To unsubscribe from this list: send the line "unsubscribe linux-cifs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/fs/cifs/link.c b/fs/cifs/link.c index d45d43d..ee5ae46 100644 --- a/fs/cifs/link.c +++ b/fs/cifs/link.c @@ -29,6 +29,10 @@ #include "cifs_debug.h" #include "cifs_fs_sb.h" +/* + * M-F Symlink Functions - Begin + */ + #define CIFS_MF_SYMLINK_LEN_OFFSET (4+1) #define CIFS_MF_SYMLINK_MD5_OFFSET (CIFS_MF_SYMLINK_LEN_OFFSET+(4+1)) #define CIFS_MF_SYMLINK_LINK_OFFSET (CIFS_MF_SYMLINK_MD5_OFFSET+(32+1)) @@ -178,6 +182,20 @@ format_mf_symlink(u8 *buf, unsigned int buf_len, const char *link_str) return 0; } +bool +couldbe_mf_symlink(const struct cifs_fattr *fattr) +{ + if (!(fattr->cf_mode & S_IFREG)) + /* it's not a symlink */ + return false; + + if (fattr->cf_eof != CIFS_MF_SYMLINK_FILE_SIZE) + /* it's not a symlink */ + return false; + + return true; +} + static int create_mf_symlink(const unsigned int xid, struct cifs_tcon *tcon, struct cifs_sb_info *cifs_sb, const char *fromName, @@ -241,20 +259,60 @@ out: return rc; } -bool -couldbe_mf_symlink(const struct cifs_fattr *fattr) +int +check_mf_symlink(unsigned int xid, struct cifs_tcon *tcon, + struct cifs_sb_info *cifs_sb, struct cifs_fattr *fattr, + const unsigned char *path) { - if (!(fattr->cf_mode & S_IFREG)) + int rc; + u8 *buf = NULL; + unsigned int link_len = 0; + unsigned int bytes_read = 0; + + if (!couldbe_mf_symlink(fattr)) /* it's not a symlink */ - return false; + return 0; - if (fattr->cf_eof != CIFS_MF_SYMLINK_FILE_SIZE) + buf = kmalloc(CIFS_MF_SYMLINK_FILE_SIZE, GFP_KERNEL); + if (!buf) + return -ENOMEM; + + if (tcon->ses->server->ops->query_mf_symlink) + rc = tcon->ses->server->ops->query_mf_symlink(xid, tcon, + cifs_sb, path, buf, &bytes_read); + else + rc = -ENOSYS; + + if (rc) + goto out; + + if (bytes_read == 0) /* not a symlink */ + goto out; + + rc = parse_mf_symlink(buf, bytes_read, &link_len, NULL); + if (rc == -EINVAL) { /* it's not a symlink */ - return false; + rc = 0; + goto out; + } - return true; + if (rc != 0) + goto out; + + /* it is a symlink */ + fattr->cf_eof = link_len; + fattr->cf_mode &= ~S_IFMT; + fattr->cf_mode |= S_IFLNK | S_IRWXU | S_IRWXG | S_IRWXO; + fattr->cf_dtype = DT_LNK; +out: + kfree(buf); + return rc; } +/* + * SMB 1.0 Protocol specific functions + */ + int cifs_query_mf_symlink(unsigned int xid, struct cifs_tcon *tcon, struct cifs_sb_info *cifs_sb, const unsigned char *path, @@ -324,55 +382,9 @@ cifs_create_mf_symlink(unsigned int xid, struct cifs_tcon *tcon, return rc; } -int -check_mf_symlink(unsigned int xid, struct cifs_tcon *tcon, - struct cifs_sb_info *cifs_sb, struct cifs_fattr *fattr, - const unsigned char *path) -{ - int rc; - u8 *buf = NULL; - unsigned int link_len = 0; - unsigned int bytes_read = 0; - - if (!couldbe_mf_symlink(fattr)) - /* it's not a symlink */ - return 0; - - buf = kmalloc(CIFS_MF_SYMLINK_FILE_SIZE, GFP_KERNEL); - if (!buf) - return -ENOMEM; - - if (tcon->ses->server->ops->query_mf_symlink) - rc = tcon->ses->server->ops->query_mf_symlink(xid, tcon, - cifs_sb, path, buf, &bytes_read); - else - rc = -ENOSYS; - - if (rc) - goto out; - - if (bytes_read == 0) /* not a symlink */ - goto out; - - rc = parse_mf_symlink(buf, bytes_read, &link_len, NULL); - if (rc == -EINVAL) { - /* it's not a symlink */ - rc = 0; - goto out; - } - - if (rc != 0) - goto out; - - /* it is a symlink */ - fattr->cf_eof = link_len; - fattr->cf_mode &= ~S_IFMT; - fattr->cf_mode |= S_IFLNK | S_IRWXU | S_IRWXG | S_IRWXO; - fattr->cf_dtype = DT_LNK; -out: - kfree(buf); - return rc; -} +/* + * M-F Symlink Functions - End + */ int cifs_hardlink(struct dentry *old_file, struct inode *inode,
This patch makes cosmetic changes. We group similar functions together and separate out the protocol specific functions. Signed-off-by: Sachin Prabhu <sprabhu@redhat.com> --- fs/cifs/link.c | 124 +++++++++++++++++++++++++++++++-------------------------- 1 file changed, 68 insertions(+), 56 deletions(-)