2012/5/18 Jeff Layton <jlayton@xxxxxxxxxx>: > On Thu, 17 May 2012 19:43:44 +0400 > Pavel Shilovsky <piastry@xxxxxxxxxxx> wrote: > >> Signed-off-by: Pavel Shilovsky <piastry@xxxxxxxxxxx> >> --- >> fs/cifs/cifsglob.h | 25 +++++++++++++++---------- >> fs/cifs/cifsproto.h | 3 --- >> fs/cifs/misc.c | 19 ------------------- >> fs/cifs/smb1ops.c | 28 ++++++++++++++++++++++++++++ >> fs/cifs/transport.c | 3 ++- >> 5 files changed, 45 insertions(+), 33 deletions(-) >> >> diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h >> index 7b3e8fe..d17db87 100644 >> --- a/fs/cifs/cifsglob.h >> +++ b/fs/cifs/cifsglob.h >> @@ -167,6 +167,9 @@ struct smb_version_operations { >> struct mid_q_entry **); >> int (*check_receive)(struct mid_q_entry *, struct TCP_Server_Info *, >> bool); >> + void (*add_credits)(struct TCP_Server_Info *, const unsigned int); >> + void (*set_credits)(struct TCP_Server_Info *, const int); >> + int * (*get_credits_field)(struct TCP_Server_Info *); >> unsigned int (*read_data_offset)(char *); >> unsigned int (*read_data_length)(char *); >> int (*map_error)(char *, bool); >> @@ -367,16 +370,6 @@ in_flight(struct TCP_Server_Info *server) >> return num; >> } >> >> -static inline int* >> -get_credits_field(struct TCP_Server_Info *server) >> -{ >> - /* >> - * This will change to switch statement when we reserve slots for echos >> - * and oplock breaks. >> - */ >> - return &server->credits; >> -} >> - >> static inline bool >> has_credits(struct TCP_Server_Info *server, int *credits) >> { >> @@ -387,6 +380,18 @@ has_credits(struct TCP_Server_Info *server, int *credits) >> return num > 0; >> } >> >> +static inline void >> +cifs_add_credits(struct TCP_Server_Info *server, const unsigned int add) >> +{ >> + server->ops->add_credits(server, add); >> +} >> + >> +static inline void >> +cifs_set_credits(struct TCP_Server_Info *server, const int val) >> +{ >> + server->ops->set_credits(server, val); >> +} >> + > > nit: maybe call these "add_credits and set_credits" and get rid of the > leading '_' on the SMB1 functions below? > >> /* >> * Macros to allow the TCP_Server_Info->net field and related code to drop out >> * when CONFIG_NET_NS isn't set. >> diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h >> index 57af642..5ec21ec 100644 >> --- a/fs/cifs/cifsproto.h >> +++ b/fs/cifs/cifsproto.h >> @@ -90,9 +90,6 @@ extern int SendReceiveBlockingLock(const unsigned int xid, >> struct smb_hdr *in_buf , >> struct smb_hdr *out_buf, >> int *bytes_returned); >> -extern void cifs_add_credits(struct TCP_Server_Info *server, >> - const unsigned int add); >> -extern void cifs_set_credits(struct TCP_Server_Info *server, const int val); >> extern int checkSMB(char *buf, unsigned int length); >> extern bool is_valid_oplock_break(char *, struct TCP_Server_Info *); >> extern bool backup_cred(struct cifs_sb_info *); >> diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c >> index d2bb1e7..e2552d2 100644 >> --- a/fs/cifs/misc.c >> +++ b/fs/cifs/misc.c >> @@ -653,22 +653,3 @@ backup_cred(struct cifs_sb_info *cifs_sb) >> >> return false; >> } >> - >> -void >> -cifs_add_credits(struct TCP_Server_Info *server, const unsigned int add) >> -{ >> - spin_lock(&server->req_lock); >> - server->credits += add; >> - server->in_flight--; >> - spin_unlock(&server->req_lock); >> - wake_up(&server->request_q); >> -} >> - >> -void >> -cifs_set_credits(struct TCP_Server_Info *server, const int val) >> -{ >> - spin_lock(&server->req_lock); >> - server->credits = val; >> - server->oplocks = val > 1 ? enable_oplocks : false; >> - spin_unlock(&server->req_lock); >> -} >> diff --git a/fs/cifs/smb1ops.c b/fs/cifs/smb1ops.c >> index 8a0b35b..17a69ed 100644 >> --- a/fs/cifs/smb1ops.c >> +++ b/fs/cifs/smb1ops.c >> @@ -102,11 +102,39 @@ cifs_find_mid(struct TCP_Server_Info *server, char *buffer) >> return NULL; >> } >> >> +static void >> +_cifs_add_credits(struct TCP_Server_Info *server, const unsigned int add) >> +{ >> + spin_lock(&server->req_lock); >> + server->credits += add; >> + server->in_flight--; >> + spin_unlock(&server->req_lock); >> + wake_up(&server->request_q); >> +} >> + >> +static void >> +_cifs_set_credits(struct TCP_Server_Info *server, const int val) >> +{ >> + spin_lock(&server->req_lock); >> + server->credits = val; >> + server->oplocks = val > 1 ? enable_oplocks : false; >> + spin_unlock(&server->req_lock); >> +} >> + >> +static int * >> +cifs_get_credits_field(struct TCP_Server_Info *server) >> +{ >> + return &server->credits; >> +} >> + >> struct smb_version_operations smb1_operations = { >> .send_cancel = send_nt_cancel, >> .compare_fids = cifs_compare_fids, >> .setup_request = cifs_setup_request, >> .check_receive = cifs_check_receive, >> + .add_credits = _cifs_add_credits, >> + .set_credits = _cifs_set_credits, >> + .get_credits_field = cifs_get_credits_field, >> .read_data_offset = cifs_read_data_offset, >> .read_data_length = cifs_read_data_length, >> .map_error = map_smb_to_linux_error, >> diff --git a/fs/cifs/transport.c b/fs/cifs/transport.c >> index 87bd998..64c35fd 100644 >> --- a/fs/cifs/transport.c >> +++ b/fs/cifs/transport.c >> @@ -304,7 +304,8 @@ wait_for_free_credits(struct TCP_Server_Info *server, const int optype, >> static int >> wait_for_free_request(struct TCP_Server_Info *server, const int optype) >> { >> - return wait_for_free_credits(server, optype, get_credits_field(server)); >> + return wait_for_free_credits(server, optype, >> + server->ops->get_credits_field(server)); >> } >> >> static int allocate_mid(struct cifs_ses *ses, struct smb_hdr *in_buf, > > Other than the minor nit above, this looks fine: > > Reviewed-by: Jeff Layton <jlayton@xxxxxxxxxx> I thought about it but decided to do it that way that lets us not rename all caller places and makes the patch smaller. But of course I don't object to rename it. Steve, thoughts? -- Best regards, Pavel Shilovsky. -- To unsubscribe from this list: send the line "unsubscribe linux-cifs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html