2011/5/26 Steve French <smfrench@xxxxxxxxx>: > On Thu, May 26, 2011 at 10:20 AM, Jeff Layton <jlayton@xxxxxxxxxxxxxxx> wrote: >> On Thu, 26 May 2011 10:02:01 +0400 >> Pavel Shilovsky <piastry@xxxxxxxxxxx> wrote: >> >>> Add cifs_match_super to use in sget to share superblock between mounts >>> that have the same //server/sharename, credentials and mount options. >>> It helps us to improve performance on work with future SMB2.1 leases. > <snip> >>> +static int >>> +compare_mount_options(struct super_block *sb, struct cifs_mnt_data *mnt_data) >>> +{ >>> + struct cifs_sb_info *old = CIFS_SB(sb); >>> + struct cifs_sb_info *new = mnt_data->cifs_sb; >>> + >>> + if ((sb->s_flags & CIFS_MS_MASK) != (mnt_data->flags & CIFS_MS_MASK)) >>> + return 0; >>> + >>> + if ((old->mnt_cifs_flags & CIFS_MOUNT_MASK) != >>> + (new->mnt_cifs_flags & CIFS_MOUNT_MASK)) >>> + return 0; >>> + >>> + if (old->rsize != new->rsize) >>> + return 0; >>> + >>> + if (new->wsize && new->wsize > old->wsize) >>> + return 0; >>> + >> >> ...also I think the above condition should be reversed. We don't want >> to match if new->wsize is smaller than the existing one. Since the >> specified wsize is just a starting point for negotiation, wsize now >> means "any wsize less than or equal to this size". If the old->wsize is >> bigger than that, then it's outside that range and we shouldn't match. > > A more important question is whether the user intentionally tried to > specify a wsize. I don't see a problem matching a new default mount > request (with no wsize specified, using therefore a default wsize) > with an existing mount (with a larger explicitly specified wsize). > If a user explicitly requests to override to a particular wsize on the 2nd > mount - seems more logical to give them what they ask for if > possible whether larger or smaller. > If I understand right, Jeff suggested to change wsize logic to: "less or equal that specified one". In this case we can share any sb that match this criteria. So, in this case it should be "if (new->wsize && new->wsize <= old->wsize) return 0;" -- 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