Message ID | 20201130180257.31787-2-scabrero@suse.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Witness protocol support for transparent failover | expand |
I have fixed up (various merge conflicts etc.) and merged the first three in the series (see attached), as well as added a patch for some comment cleanups, and a patch to move (following Rafal's suggestion) a few of the functions from fs/cifs/misc.c to a new file fs/cifs/unc.c The first three in the series are very low risk and can be merged independent of the others to make review/cleanup of the final patches easier. I will fixup patch 4 (which add a mount parm and thus requires rebasing on Ronnie's mount API series). Am planning reviewing the final seven in the series, let me know if changes needed to the remaining (ie patches 5 through 11). On Mon, Nov 30, 2020 at 12:04 PM Samuel Cabrero <scabrero@suse.de> wrote: > > Move the function to misc.c and give it a public header. > > Signed-off-by: Samuel Cabrero <scabrero@suse.de> > --- > fs/cifs/cifsproto.h | 1 + > fs/cifs/connect.c | 34 ---------------------------------- > fs/cifs/misc.c | 32 ++++++++++++++++++++++++++++++++ > 3 files changed, 33 insertions(+), 34 deletions(-) > > diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h > index 24c6f36177ba..d716e81d86fa 100644 > --- a/fs/cifs/cifsproto.h > +++ b/fs/cifs/cifsproto.h > @@ -620,6 +620,7 @@ int smb2_parse_query_directory(struct cifs_tcon *tcon, struct kvec *rsp_iov, > struct super_block *cifs_get_tcp_super(struct TCP_Server_Info *server); > void cifs_put_tcp_super(struct super_block *sb); > int update_super_prepath(struct cifs_tcon *tcon, char *prefix); > +char *extract_hostname(const char *unc); > > #ifdef CONFIG_CIFS_DFS_UPCALL > static inline int get_dfs_path(const unsigned int xid, struct cifs_ses *ses, > diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c > index 28c1459fb0fc..a938371af6ef 100644 > --- a/fs/cifs/connect.c > +++ b/fs/cifs/connect.c > @@ -284,7 +284,6 @@ static int ip_connect(struct TCP_Server_Info *server); > static int generic_ip_connect(struct TCP_Server_Info *server); > static void tlink_rb_insert(struct rb_root *root, struct tcon_link *new_tlink); > static void cifs_prune_tlinks(struct work_struct *work); > -static char *extract_hostname(const char *unc); > > /* > * Resolve hostname and set ip addr in tcp ses. Useful for hostnames that may > @@ -1232,39 +1231,6 @@ cifs_demultiplex_thread(void *p) > module_put_and_exit(0); > } > > -/* extract the host portion of the UNC string */ > -static char * > -extract_hostname(const char *unc) > -{ > - const char *src; > - char *dst, *delim; > - unsigned int len; > - > - /* skip double chars at beginning of string */ > - /* BB: check validity of these bytes? */ > - if (strlen(unc) < 3) > - return ERR_PTR(-EINVAL); > - for (src = unc; *src && *src == '\\'; src++) > - ; > - if (!*src) > - return ERR_PTR(-EINVAL); > - > - /* delimiter between hostname and sharename is always '\\' now */ > - delim = strchr(src, '\\'); > - if (!delim) > - return ERR_PTR(-EINVAL); > - > - len = delim - src; > - dst = kmalloc((len + 1), GFP_KERNEL); > - if (dst == NULL) > - return ERR_PTR(-ENOMEM); > - > - memcpy(dst, src, len); > - dst[len] = '\0'; > - > - return dst; > -} > - > static int get_option_ul(substring_t args[], unsigned long *option) > { > int rc; > diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c > index 1c14cf01dbef..3d5cc25c167f 100644 > --- a/fs/cifs/misc.c > +++ b/fs/cifs/misc.c > @@ -1195,3 +1195,35 @@ int update_super_prepath(struct cifs_tcon *tcon, char *prefix) > cifs_put_tcon_super(sb); > return rc; > } > + > +/* extract the host portion of the UNC string */ > +char *extract_hostname(const char *unc) > +{ > + const char *src; > + char *dst, *delim; > + unsigned int len; > + > + /* skip double chars at beginning of string */ > + /* BB: check validity of these bytes? */ > + if (strlen(unc) < 3) > + return ERR_PTR(-EINVAL); > + for (src = unc; *src && *src == '\\'; src++) > + ; > + if (!*src) > + return ERR_PTR(-EINVAL); > + > + /* delimiter between hostname and sharename is always '\\' now */ > + delim = strchr(src, '\\'); > + if (!delim) > + return ERR_PTR(-EINVAL); > + > + len = delim - src; > + dst = kmalloc((len + 1), GFP_KERNEL); > + if (dst == NULL) > + return ERR_PTR(-ENOMEM); > + > + memcpy(dst, src, len); > + dst[len] = '\0'; > + > + return dst; > +} > -- > 2.29.2 > -- Thanks, Steve
diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h index 24c6f36177ba..d716e81d86fa 100644 --- a/fs/cifs/cifsproto.h +++ b/fs/cifs/cifsproto.h @@ -620,6 +620,7 @@ int smb2_parse_query_directory(struct cifs_tcon *tcon, struct kvec *rsp_iov, struct super_block *cifs_get_tcp_super(struct TCP_Server_Info *server); void cifs_put_tcp_super(struct super_block *sb); int update_super_prepath(struct cifs_tcon *tcon, char *prefix); +char *extract_hostname(const char *unc); #ifdef CONFIG_CIFS_DFS_UPCALL static inline int get_dfs_path(const unsigned int xid, struct cifs_ses *ses, diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index 28c1459fb0fc..a938371af6ef 100644 --- a/fs/cifs/connect.c +++ b/fs/cifs/connect.c @@ -284,7 +284,6 @@ static int ip_connect(struct TCP_Server_Info *server); static int generic_ip_connect(struct TCP_Server_Info *server); static void tlink_rb_insert(struct rb_root *root, struct tcon_link *new_tlink); static void cifs_prune_tlinks(struct work_struct *work); -static char *extract_hostname(const char *unc); /* * Resolve hostname and set ip addr in tcp ses. Useful for hostnames that may @@ -1232,39 +1231,6 @@ cifs_demultiplex_thread(void *p) module_put_and_exit(0); } -/* extract the host portion of the UNC string */ -static char * -extract_hostname(const char *unc) -{ - const char *src; - char *dst, *delim; - unsigned int len; - - /* skip double chars at beginning of string */ - /* BB: check validity of these bytes? */ - if (strlen(unc) < 3) - return ERR_PTR(-EINVAL); - for (src = unc; *src && *src == '\\'; src++) - ; - if (!*src) - return ERR_PTR(-EINVAL); - - /* delimiter between hostname and sharename is always '\\' now */ - delim = strchr(src, '\\'); - if (!delim) - return ERR_PTR(-EINVAL); - - len = delim - src; - dst = kmalloc((len + 1), GFP_KERNEL); - if (dst == NULL) - return ERR_PTR(-ENOMEM); - - memcpy(dst, src, len); - dst[len] = '\0'; - - return dst; -} - static int get_option_ul(substring_t args[], unsigned long *option) { int rc; diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c index 1c14cf01dbef..3d5cc25c167f 100644 --- a/fs/cifs/misc.c +++ b/fs/cifs/misc.c @@ -1195,3 +1195,35 @@ int update_super_prepath(struct cifs_tcon *tcon, char *prefix) cifs_put_tcon_super(sb); return rc; } + +/* extract the host portion of the UNC string */ +char *extract_hostname(const char *unc) +{ + const char *src; + char *dst, *delim; + unsigned int len; + + /* skip double chars at beginning of string */ + /* BB: check validity of these bytes? */ + if (strlen(unc) < 3) + return ERR_PTR(-EINVAL); + for (src = unc; *src && *src == '\\'; src++) + ; + if (!*src) + return ERR_PTR(-EINVAL); + + /* delimiter between hostname and sharename is always '\\' now */ + delim = strchr(src, '\\'); + if (!delim) + return ERR_PTR(-EINVAL); + + len = delim - src; + dst = kmalloc((len + 1), GFP_KERNEL); + if (dst == NULL) + return ERR_PTR(-ENOMEM); + + memcpy(dst, src, len); + dst[len] = '\0'; + + return dst; +}
Move the function to misc.c and give it a public header. Signed-off-by: Samuel Cabrero <scabrero@suse.de> --- fs/cifs/cifsproto.h | 1 + fs/cifs/connect.c | 34 ---------------------------------- fs/cifs/misc.c | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 33 insertions(+), 34 deletions(-)